質問

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top