2011-07-29 2 views
8

こんにちは、私は名前によってそれらにASCをソートしたいが、私はすべてのレコードNR 43mysqlクエリの上に行を置く方法。

の上に一つのレコードを必要とする私のSQLテーブル内の100件のレコードを持っているが、私は43最初にこのレコードを引っ張り、その後、他のすべてできる方法はあります名前によるASCの注文?

トリックは1つのクエリで行います。

+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

なしのUNIONまたは場合:

ORDER BY id = 43 DESC, name ASC 
+0

super、これはまさに私が探していたものでした。 – Tim

+0

@sqwk簡単な解決策を導き出すためのUpvote –

0

このクエリはすべての上にID 43と0と記録に値1を有する優先と呼ばれる列を追加する必要がありますその他。次に、優先順位を最初に並べ替えます。

SELECT mytable.*, IF(id = 43, 1, 0) AS priority FROM mytable ORDER BY priority DESC, name ASC 
関連する問題