IN() 句の値の順序で並べ替える方法 (おそらくもっと良い方法) があるかどうか疑問に思っています。
問題は、2 つのクエリがあることです。1 つはすべての ID を取得し、もう 1 つはすべての情報を取得します。1 つ目は、2 つ目の順序で並べたい ID の順序を作成します。ID は正しい順序で IN() 句に入れられます。
したがって、次のようになります(非常に単純化されています):
SELECT id FROM table1 WHERE ... ORDER BY display_order, name
SELECT name, description, ... WHERE id IN ([id's from first])
問題は、2 番目のクエリが、ID が IN() 句に入れられた順序と同じ順序で結果を返さないことです。
私が見つけた 1 つの解決策は、すべての ID を自動インクリメント フィールドを持つ一時テーブルに配置し、それを 2 番目のクエリに結合することです。
より良いオプションはありますか?
注:最初のクエリは「ユーザーによって」実行され、2 番目のクエリはバックグラウンド プロセスで実行されるため、サブクエリを使用して 2 つを 1 つのクエリに結合する方法はありません。
私はMySQLを使用していますが、他のDBにもどのようなオプションがあるかを記載しておくと便利かもしれないと考えています.