本帖最後由 xviphackl 於 2013-07-30 16:14:18 編輯
在開發過程遇到了一個很糾結的問題。
就是我想把新發表的或在整個內容列表任意的位置的內容,移動到內容列表指定的位置!舉個例子:
order id
---------------
4 1
3 2
2 3
1 4
我想把ID為4的資料移動到ID為2的下面。我目前的處理辦法是目標ID的ORDER+1(-1)的方式來進行排序,但是,像這種有序的列表,就會出現ORDER相同的值,這個時候,在進行排序最終結果有點出乎意料。
有什麼辦法能夠解決這個問題?
回複討論(解決方案)
order by `order`, id
order 相同的按 id 排序
只要你遵守自己的約定,就不會出現 出乎意料 的結果
如,的資料,我現在想把role_id為1的資料排到10的上面,但是,結果出乎了意料。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
不能一遇到 這種問題, 就更改一次SQL語句?
如,的資料,我現在想把role_id為1的資料排到10的上面,但是,結果出乎了意料。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
不能一遇到 這種問題, 就更改一次SQL語句?
desc是倒序,由大到小排列,10當然就排到1的前面了,role_id那裡用asc
就是一個表裡面有很多內容,我們需要把一些自認為很重要的內容通過人為的的幹預,讓他到指定的位置!!!
沒有規則,很自由的讓他“上”,“下”移動。給你所說的DISCUZ的排序不同,我們現在考慮的就一個欄位,沒有類型區分。只有數位大小來判定這條內容他的位置。
應該是這樣,說得比較淩亂。
如,的資料,我現在想把role_id為1的資料排到10的上面,但是,結果出乎了意料。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
不能一遇到 這種問題, 就更改一次SQL語句?
desc是倒序,由大到小排列,10當然就排到1的前面了,role_id那裡用asc
OK ,
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` ASC
你說是這樣子是嗎。
反之,我想把ID為10的排到ID為1的上面,請問該怎麼做,不能老是去更改SQL?
如,的資料,我現在想把role_id為1的資料排到10的上面,但是,結果出乎了意料。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
不能一遇到 這種問題, 就更改一次SQL語句?
desc是倒序,由大到小排列,10當然就排到1的前面了,role_id那裡用asc
OK ,
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` ASC
你說是這樣子是嗎。
反之,我想把ID為10的排到ID為1的上面,請問該怎麼做,不能老是去更改SQL?
如果你想人為指定,就寫個函數,你想讓10在1的上面,就傳個10進這個函數,顯示的時候讓10在上面,想讓1在上面是同樣的道理。就是說,在顯示的時候,進行控制。
如,的資料,我現在想把role_id為1的資料排到10的上面,但是,結果出乎了意料。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
不能一遇到 這種問題, 就更改一次SQL語句?
desc是倒序,由大到小排列,10當然就排到1的前面了,role_id那裡用asc
OK ,
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` ASC
你說是這樣子是嗎。
反之,我想把ID為10的排到ID為1的上面,請問該怎麼做,不能老是去更改SQL?
如果你想人為指定,就寫個函數,你想讓10在1的上面,就傳個10進這個函數,顯示的時候讓10在上面,想讓1在上面是同樣的道理。就是說,在顯示的時候,進行控制。
關鍵是怎麼去確定哪個在上面,哪個在下面。這是一個問題,?可以說說你的具體的辦法嗎?
如,的資料,我現在想把role_id為1的資料排到10的上面,但是,結果出乎了意料。
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` DESC
不能一遇到 這種問題, 就更改一次SQL語句?
desc是倒序,由大到小排列,10當然就排到1的前面了,role_id那裡用asc
OK ,
SELECT * FROM `tbl` ORDER BY `role_sort` DESC , `role_id` ASC
你說是這樣子是嗎。
反之,我想把ID為10的排到ID為1的上面,請問該怎麼做,不能老是去更改SQL?
如果你想人為指定,就寫個函數,你想讓10在1的上面,就傳個10進這個函數,顯示的時候讓10在上面,想讓1在上面是同樣的道理。就是說,在顯示的時候,進行控制。
關鍵是怎麼去確定哪個在上面,哪個在下面。這是一個問題,?可以說說你的具體的辦法嗎?
這要看你自己定的規則了,你不是要通過人為的幹預讓“自認為”重要的內容到制定的位置嗎?那你得先把規則搞清楚,然後才能根據規則出代碼。明白嗎?