-1

従業員という名前のMySQLテーブルがあります

 1. id 
 2. employee 
 3. state

「ニューヨーク」という名前の州が最初に来て、他のすべてのレコードが正常に来るデータベースを照会する方法がわかりません。これが私がこれまでに持っているものです

$sql = "select * from employees order by";
4

5 に答える 5

9

最も簡単なオプション:

ORDER BY (state = 'New York') DESC, state

は1(true)または0(false)のいずれかを返すため(state = 'New York')、ニューヨーク(state = 'New York'1を返す)が他の州の前に返されるように結果を簡単に並べ替えることができます。

他のオプションは使用することでしたCASE

ORDER BY CASE WHEN state = 'New York' THEN 0 ELSE 1 END, state
于 2012-11-07T22:55:50.540 に答える
3
select * from employees order by state="New York" desc;

これは、州がニューヨークと等しいかそうでないかによってレコードを並べ替えます。New Yark を 2 回綴っていることに気付きました。データを操作するには、上記の修正を解除する必要があるかもしれません。「desc」を指定すると、順序が昇順ではなく降順になり、「真」の値が最初になります。

JClaspill が指摘しているように、「ニューヨーク」に相当する州のないレコードは、州順ではなく自然に並べ替えられます。ステートメントに追加, stateすると、order by他のレコードは州のアルファベット順に並べ替えられますが、"New York" レコードが最初に保持されます。

于 2012-11-07T22:58:37.177 に答える
0

制御フロー関数文字列関数を使用して、"AAA" を "New York" の前に追加し、他には何も追加しません。

結果の文字列で並べ替えます。

于 2012-11-07T22:53:01.963 に答える
0

$sql = "SELECT * FROM employees ORDER BY CASE WHEN state = \'New York\' THEN 0 ELSE 1 END, state";

于 2012-11-07T23:57:58.513 に答える
0

関連する状態を上位のランクに強制する条件を注文に追加できます。

mysql [sandbox]> create table t1 (id integer primary key, state varchar(20));
mysql [sandbox]> insert into t1 values(1,'Last State'), (2, 'First State');
mysql [sandbox]> select * from t1;
1   Last State
2   First State
mysql [sandbox]> select * from t1 order by state='Last State';
2   First State
1   Last State

これは、2 行で「False, True」と評価され、False 条件が一番上になるように並べ替えられます。

于 2012-11-07T22:59:25.010 に答える