2017-08-18 12 views
1

何らかの技術的な制限があるかどうか、または私の心が失われているかどうかはわかりません。私はsqliteデータベースから特定の行を検索したいと思っています。しかし、クエリは結果を返さないため、私のロガーは構文エラーがあるというエラーをスローします。ここでSQLite IDを使用して複数の行を選択する

はクエリです:

Select * From Equipment Where ID = 2 and ID = 3 and ID = 4 and ID = 7 and ID = 11 and ID = 34 

そして、ここでは私のログからの構文エラーです:だから

Aug 17 2017 23:12:23 [Err]: Err002 - Query on Equipment could not be prepared: near "=": syntax error at File: c:\users\geowil\documents\visual studio 2015\projects\ov_pocs\universearc_poc\datasystem.cpp Line: 323. 

、私が試してみて、私が何かを逃したかどうかを確認するためにSQLFiddleにオーバー出航しました。私はその下にリンクします。それと同じ振る舞いを表示していますが、結果は返されませんが、単一のIDまたはIDの範囲で実行中のクエリが機能します。

http://sqlfiddle.com/#!5/68cd3f/4

アムは、私が何か間違ったことか、これはSQLiteのの制限ですか?


更新:

は、脳波を持っていました。 Using IN(1,3,4)はSQLFiddle上で動作しますが、今はなぜ私の質問に再利用したいのですか?

答えて

1

"IN"を使用して複数のタプルを選択します。 Select * From Equipment Where ID IN (2, 3, 4, 7, 11, 34);。 すべてのIDがSQLiteまたはDatabaseに存在する場合、すべてのタプルが選択されます。クエリの

idが2つ以上の値がありませんので、あなたの論理式はタプルのいずれかを選択することはありません(ID=2 AND ID=3を:それは3に等しくなりません2に等しいID場合)。あなたの場合、ANDの代わりにORを使用する必要があります。 Select * From Equipment Where ID=2 OR ID=3 OR ID=4 OR ID=7 OR ID=11 OR ID=34;。すべてのIDがSQLiteまたはDatabaseに存在する場合、すべてのタプルが選択されるようにします。

+0

Oh jesus。ダー、なぜそれが私に起こらなかったのかわからない。ありがとう。 – Geowil

+0

あなたは大歓迎です! 正しい答えとして確認してください! –

1

「=」の代わりに「in」を使用すると、問題は修正されます。

select * from Equipment where ID in (1 , 2) 
1

ANDは、両方の条件が真でなければならないことを意味します。しかし、どの単一の行に対しても、単一のID値しか存在できません。

複数の値のいずれかと一致するかどうかを確認するには、ANDORに置き換えるか、INを使用してください。

関連する問題