排序的問題,請教高手。

來源:互聯網
上載者:User
本帖最後由 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在上面是同樣的道理。就是說,在顯示的時候,進行控制。


關鍵是怎麼去確定哪個在上面,哪個在下面。這是一個問題,?可以說說你的具體的辦法嗎?

這要看你自己定的規則了,你不是要通過人為的幹預讓“自認為”重要的內容到制定的位置嗎?那你得先把規則搞清楚,然後才能根據規則出代碼。明白嗎?
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.