in()by in()by mysql注文
-
19-09-2019 - |
質問
IDの数が含まれているPHPアレイがあります。これらの数値はすでに注文されています。
今度は、すべての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
助言がありますか?多分これを行う機能がありますか?
ありがとう!
解決
私はあなたが機能を探しているかもしれないと思います 分野 - 通常は文字列関数と考えられていますが、数字でも正常に機能します!
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を返します。
しかし、それは醜いハックのようなものなので、他に選択肢がない場合にのみ使用してください。アプリの出力をソートする方が良い場合があります。
標準のSQLはこれを行う方法を提供しません(MySQLは5月ですが、ベンダーが中立であるソリューションを好むので、いつでもDBMSを切り替えることができます)。
これは、後処理ですべきことです 後 結果セットが返されます。 SQLは、「注文」句(または どれか そのような条項がない場合は注文)。
もう1つの可能性(私はそれが好きではありませんが、私はあなたに選択を与えることを名誉に陥れています)は、データベースに複数の旅行を行い、それぞれの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.
声明ごとに正しい注文を行う必要があります。
SELECT ID FROM myTable WHERE ID IN(1,2,3,4) ORDER BY ID
なぜあなたの例のように、あなたのデータを注文していないものにしたいのですか?
長いクエリを一致させることを気にしない場合は、そのようにしてみてください。
SELECT ID FROM myTable WHERE ID=1
UNION
SELECT ID FROM myTable WHERE ID=3
UNION
SELECT ID FROM myTable WHERE ID=2
所属していません StackOverflow