私はSQLステートメントを持っています。SQLのSELECT文
結果を返すと、常にaaa、bbb、ccc、dddのようなIDでソートされます。 しかし、私はそれらをbbb、aaa、ddd、cccのように入力したのと同じ順番にしておきたい。
解決方法を教えてもらえますか?
私はSQLステートメントを持っています。SQLのSELECT文
結果を返すと、常にaaa、bbb、ccc、dddのようなIDでソートされます。 しかし、私はそれらをbbb、aaa、ddd、cccのように入力したのと同じ順番にしておきたい。
解決方法を教えてもらえますか?
ORDER BY
で質問しない限り、検索順序は指定されていません。入力した順序を保持したい場合は、プログレッシブROW_NUMBER
列を追加して、並べ替えを依頼してください。このクエリは、あなたが望むものを達成する可能性があるという事実にもかかわらず
select * from users where username='bbb'
UNION
select * from users where username='aaa'
UNION
select * from users where username='ddd'
UNION
select * from users where username='ccc'
、ユーザー6502が述べたように、順序はこのクエリではまだ特定されていないので、あなたが安全に別の間でのような返されることに依存することはできません実装。別の注意点として
、あなたの奇妙なソート順序は重要ではなかった場合、あなただけのIN句WHERE使用する必要があります:あなたは、ユーザーの表の「ID」欄を(持っている場合
select * from users where username in ('aaa', 'bbb', 'ccc', 'ddd', 'ccc')
lolちょうどあなたが*できることを意味するわけではありません:D –
はい、私はそれが不思議な倒錯であることに同意します。 –
「テキストデータ型は比較できないため、DISTINCTとして選択できません」というメッセージが表示されます。私がユニオン – hhh3112
をDDD「の最大のID」を有する)で、あなたはこのような何かを行うことができます。
select * from users where username in ('aaa','bbb','ccc','ddd')
order by id;
はETA:id列が別のテーブルにある場合は、正しいIDを取得するために結合を実行する必要があります。
特定のデータベースには、依存してはいけないが、それでもなお存在するデフォルトの順序があります。例えば、MySQL InnoDBテーブルは、デフォルトで 'PRIMARY KEY'を昇順に並べた結果を返します。 – dkarp