4

私は今、他の方法でそれをあきらめてソートしましたが、「好奇心が猫を殺した」ので、INwhereステートメント内でmysqlquery@variablesを使用する方法を理解しようとしています。

だから、これから:

SELECT * FROM table1 WHERE table1.ID IN (794,758)

変数を含めようとすると、構文エラーが返されます。

SET @variousids="(794,758)";
SELECT * FROM table1 WHERE table1.ID IN @variousids

これは、最初からの値のみを返します。

SET @variousids="794,758";
SELECT * FROM table1 WHERE table1.ID IN (@variousids)

さまざまな構文、値を試しましたが、値のリストの定義に関する特定のドキュメントは見つかりませんでした。

4

3 に答える 3

6

を使用しfind_in_setます。以下が機能します。

SET @variousids="794,758";
SELECT * FROM table1 WHERE find_in_set(table1.ID,@variousids)
于 2012-02-06T10:22:37.653 に答える
1

試す :-

SET @variousids="794,758";
SELECT * FROM table1 WHERE table1.ID FIND_IN_SET (table1.ID,@variousids)
于 2012-02-06T10:23:01.647 に答える
0

動的SQLを使用する:

SET @variousids="794,758";
prepare stmt from 'SELECT * FROM table1 WHERE table1.ID IN ( ? )'
execute stmt using @variousids;

詳細については、この記事を確認してください

于 2012-02-06T10:13:15.280 に答える