簡體   English   中英

MySQL按一個表的兩列排序

[英]MySQL sort by two columns of one table

我有這張桌子:

CREATE TABLE table_name (id INT, for_id INT, comms VARCHAR(50));
    INSERT INTO table_name VALUES (1,0, 'boo'),
                                    (2,1, 'John'),
                                    (3,0, 'Zoe'),
                                    (4,3, 'bar'),
                                    (5,1, 'Don'),
                                    (6,3, 'FOO'),
                                    (7,1, 'Doe');

http://sqlfiddle.com/#!9/859933/6

我如何下一步:

1.0.'boo'
2.1.'John'
5.1.'Don'
7.1.'Doe'
3.0.'Zoe'
4.3.'bar'
6.3.'FOO'

謝謝!

不確定這是否是您真正想要的,您應該對發布后的結果順序進行一些說明。

select *
from table_name
order by 
    case when for_id = 0 then concat(id, for_id) + 0
         else concat(for_id, id) + 0
    end

SQLFiddle演示在這里

更新:

再試一次,

select *
from table_name
order by 
    case when for_id = 0 then mod(concat(for_id, id) + 0, 10)
         else mod(concat(id, for_id) + 0, 10)
    end
    , id asc

SQLFiddle

再次更新:

select *
from table_name
order by 
    case when for_id = 0 then id
         else for_id
    end
    , id asc

SQLFiddle

只需使用order by ,它可以得到多個列

Select * from table_name 
  order by id asc, for_id asc;

使用訂購者和Cancat

select Concat(id,'.',for_id) as id ,comms
from table_name
order by id asc,for_id asc

更新 :

根據您的條件使用命令並應用case聲明

select *
from table_name
order by 
    case when for_id = 0 then concat(id, for_id) + 1
         else concat(for_id, id) + 0
    end

http://sqlfiddle.com/#!9/859933/25

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM