PHP配列にIDの番号が含まれています。これらの番号は既に注文されています。
ここで、すべてのIDを取得するために、IN()メソッドを介して結果を取得したいと思います。
ただし、これらのIDはINメソッドのように順序付けする必要があります。
例えば:
IN(4,7,3,8,9)
次のような結果が得られます。
4 - Article 4
7 - Article 7
3 - Article 3
8 - Article 8
9 - Article 9
助言がありますか?たぶんこれを行う機能がありますか?
ありがとう!
関数 [〜#〜] field [〜#〜] -を探しているのではないかと思いますが、通常は文字列関数と考えられていますが、数値に対しても正常に機能します。
ORDER BY FIELD(field_name, 3,2,5,7,8,1)
FIELD()
を使用できます。
ORDER BY FIELD(id, 3,2,5,7,8,1)
Str1、str2、str3、...リスト内のstrのインデックス(位置)を返します。 strが見つからない場合は0を返します。
ただし、これは一種のhackいハックなので、他に選択肢がない場合にのみ実際に使用してください。アプリの出力を並べ替えることをお勧めします。
標準SQLはこれを行う方法を提供しません(MySQLは可能ですが、DBMSをいつでも切り替えることができるように、ベンダーに中立なソリューションを好みます)。
これは後処理で行うべきことですafter結果セットが返されます。 SQLは、 "order by"句で指定された順序(またはそのような句がない場合はany順序)でのみそれらを返すことができます。
他の可能性(私は好きではありませんが、選択肢を与えることは名誉なことです)は、データベースに複数の旅行を行い(IDごとに1回)、入ってくるときにそれらを処理することです:
select * from tbl where article_id = 4;
// Process those.
select * from tbl where article_id = 7;
// Process those.
: : : : :
select * from tbl where article_id = 9;
// Process those.