2012-01-01 6 views
3

整数が格納されている列を持つテーブルを想定します。マルチセットでMySQLの「ORDER BY」が区別されていますか?

----------------------------- 
id | some_int | some_other_value 
----------------------------- 
1  5   hello 
2  9   how 
3  987   are 
4  5   you 
5  9   thanks 
6  1   for 
7  5   answering. :-) 

SELECT * FROM mytable ORDER BY some_int;は別ですか?意味は、各クエリの後に常に同じ順序で行を返しますか?

答えて

2

私が知っている限り、order by節に重複がある場合、重複が提示される順序の保証はありません。

これが問題になる場合は、主キー(想定しているID)を含むように順序を変更することができます。

ORDER BY some_int, id 

idは主キーであるため、インデックスを付ける必要があります。したがって、パフォーマンスの差は最小限に抑えられます。

1

この注文を行うことで、必ずしも同じ結果の注文をする必要はありません。注文が異なることは頻繁ではありませんが、注文が常にあなたが注文している一意の値ではないと仮定することは100%安全ではありません。これを達成するには、最初の注文後に主キーも含める必要があります。

SELECT * FROM mytable ORDER BY some_int, id 
1

使用この:

SELECT * FROM mytable ORDER BY some_int,id; 

だから、それはsome_int 'の並べ替え、その後、 'some_id' の 'ID' 重複を使用します 'ID' 列

を使用して固定位置に設定されます。
関連する問題