第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

在數(shù)據(jù)庫表中使用排序順序列

在數(shù)據(jù)庫表中使用排序順序列

ABOUTYOU 2019-11-29 09:53:08
假設(shè)我Product在購物網(wǎng)站的數(shù)據(jù)庫中有一個(gè)表,用于保存商店產(chǎn)品的描述,價(jià)格等。使客戶能夠重新訂購這些產(chǎn)品的最有效方法是什么?我創(chuàng)建了一個(gè)Order用于對記錄進(jìn)行排序的列(整數(shù)),但是由于我使用了原始方法來更改每個(gè)記錄的順序,因此使我在性能方面有些頭疼。一個(gè)例子:Id    Order5     38     126    232    5120   4現(xiàn)在我該怎么做才能將記錄的順序更改ID=26為3?我所做的是創(chuàng)建一個(gè)過程,該過程檢查目標(biāo)順序(3)中是否有記錄,如果沒有,則更新行的順序(ID = 26)。如果有目標(biāo)順序的記錄,則過程將執(zhí)行自身發(fā)送該行的ID target order + 1作為參數(shù)。這導(dǎo)致在我要更改以騰出空間的每個(gè)記錄之后更新每個(gè)記錄:Id    Order5     48     126    332    6120   5那么一個(gè)聰明的人會做什么?我使用SQL Server 2008 R2。編輯:我需要一個(gè)項(xiàng)目的order列足以在不涉及輔助鍵的情況下進(jìn)行排序。僅訂單列必須為其記錄指定唯一的位置。除了所有這些之外,我想知道是否可以實(shí)現(xiàn)鏈接列表之類的功能:使用“下一個(gè)”列而不是“訂單”列來保留下一個(gè)項(xiàng)目ID。但是我不知道如何編寫查詢以正確的順序檢索記錄。如果有人也對這種方法有想法,請分享。
查看完整描述

3 回答

?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊

Update product set order = order+1 where order >= @value changed

盡管隨著時(shí)間的流逝,您會在訂單中獲得越來越大的“空間”,但仍會“排序”


這將在一個(gè)語句中為要更改的值及其后的每個(gè)值加1,但以上語句仍然為真。您的訂單中將形成越來越大的“空格”,甚至可能超過INT值。


給定無空格的替代解決方案:


想象一下以下過程:具有@ NewOrderVal,@ IDToChange,@ OriginalOrderVal參數(shù)的UpdateSortOrder


分兩步進(jìn)行,取決于新/舊訂單是向上還是向下排序。


If @NewOrderVal < @OriginalOrderVal --Moving down chain 


--Create space for the movement; no point in changing the original 

    Update product set order = order+1 

    where order BETWEEN @NewOrderVal and @OriginalOrderVal-1;


end if


If @NewOrderVal > @OriginalOrderVal --Moving up chain


--Create space  for the momvement; no point in changing the original  

  Update product set order = order-1 

  where order between @OriginalOrderVal+1 and @NewOrderVal

end if


--Finally update the one we moved to correct value


    update product set order = @newOrderVal where ID=@IDToChange;

關(guān)于最佳實(shí)踐;我去過的大多數(shù)環(huán)境通常都希望按類別對它們進(jìn)行分類并按字母順序或基于“受歡迎程度”進(jìn)行排序,從而無需提供用戶定義的排序。


查看完整回答
反對 回復(fù) 2019-11-29
?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

我過去使用的一種解決方案(取得了一些成功)是使用“重量”而不是“順序”。重量很明顯,較重的物品(即:數(shù)字越?。┏寥氲撞?,越輕(數(shù)字越大)則升至頂部。


如果我有多個(gè)重量相同的物品,我認(rèn)為它們具有相同的重要性,并按字母順序排列。


這意味著您的SQL將如下所示:


ORDER BY 'weight', 'itemName'

希望能有所幫助。


查看完整回答
反對 回復(fù) 2019-11-29
  • 3 回答
  • 0 關(guān)注
  • 813 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號