2011-07-29 53 views
8

嗨,我有100條記錄在我的SQL表我想通過名字對它們進行排序ASC,但我需要所有的記錄NR 43如何把行放在mysql查詢的頂部。

的頂部一個紀錄是有辦法可以拉這個記錄43首,然後一切ASC按名稱排序?

訣竅是在一個查詢中做到這一點。

+0

看到這個http://stackoverflow.com/questions/16568/how-to-select-the-nth-row-in-a-sql-database-table –

回答

6

使用此:

ORDER BY CASE WHEN (record is 43) THEN 0 ELSE 1 END, Name 
0

使用union創建選擇的第一條記錄,然後追加一套下應該出現記錄的查詢。

如:

select * from table where id = 43; 
union 
select * from table where id <> 43; 
+0

聯盟不無保證的訂單按順序排列。 – Jacob

24

沒有工會或情況需要:

ORDER BY id = 43 DESC, name ASC 
+0

超級,這正是我正在尋找的,我可以確認它的作品! – Tim

+0

@sqwk Upvote帶來簡單的解決方案.. –

0

此查詢應該添加一個名爲優先列,其值爲1的記錄與所有ID 43和0其他。然後你先按優先級排序。

SELECT mytable.*, IF(id = 43, 1, 0) AS priority FROM mytable ORDER BY priority DESC, name ASC 
相關問題