4

WHEREで動的に作成されたリストを使用しようとしています。例:

select * from books where id in (123, 120, 125) and bookCover = 'Hardcover'

rawQueryで使用したいので、「?」でSQLを準備しました。フォーム、例:

select * from books here id in (?) and bookCover = ?

selectのIN句に「ids」のリストを入れる方法はありますか?または、「?」を含むプリペアドステートメントを忘れる必要がありますか??

助けてくれてありがとう。検索しました

4

1 に答える 1

3

いいえ - あなたが求めるものを提供するDB(Oracle、SQL Server、SQLite、Postgresなど)を知りません...

あなたが得ることができる最も近い解決策は、IDを2番目のテーブルに挿入し、そのIN部分でサブクエリを使用することです...

MyIDTable帽子 2 フィールドQNO(は単なるキー) とID(必要な ID が含まれていますIN...最初に、同じ QNO とそれぞれの ID を持つ 3 つの行を挿入します...

INSERT INTO MyIDTable (QNO, ID) VALUES (3, 120);
INSERT INTO MyIDTable (QNO, ID) VALUES (3, 123);
INSERT INTO MyIDTable (QNO, ID) VALUES (3, 125);

SELECT次に、次のようにすることができます。

select * from books where id in (SELECT T.ID FROM MyIDTable T WHERE T.QNO = 3) and
bookCover = 'Hardcover'

これは基本的にこれを可能にします:

select * from books where id in (SELECT T.ID FROM MyIDTable T WHERE T.QNO = ?) and
bookCover = ?

特定の ID セットを探し終わったら、 でクリーンアップできますDELETE FROM MyIDTable WHERE QNO = 3

于 2012-04-04T19:57:20.380 に答える