以下のようなSQLクエリの設計があります。
SELECT (THIS ITEMS)
FROM (TABLES)
WHERE(SOME CONDITION) AND NOT IN (CONDITION) AND IN (CONDITION)
しかし、「IN」条件が適切に動作していないため、必要に応じて適切な出力が得られません
以下のようなSQLクエリの設計があります。
SELECT (THIS ITEMS)
FROM (TABLES)
WHERE(SOME CONDITION) AND NOT IN (CONDITION) AND IN (CONDITION)
しかし、「IN」条件が適切に動作していないため、必要に応じて適切な出力が得られません
比較する列が必要です。適切な構文は次のとおりです ( に注意してくださいcolumn_expression
):
SELECT <select_list>
FROM <table_expression>
WHERE <column_expression> [NOT] IN (<comparison_list>)
例えば、
SELECT col1, col2
FROM tab
WHERE col3 IN ('yes', 'no')
AND col4 NOT IN ('no', 'maybe')
次のように、静的比較リストの代わりに単一列の結果セットを使用することもできます。
SELECT col1, col2
FROM tab
WHERE col3 IN (SELECT filterValues FROM table2)
ただしEXISTS
、この場合には句を使用する方がはるかに最適です。
SELECT col1, col2
FROM tab
WHERE EXISTS (SELECT 1 FROM table2 WHERE filterValues = col3)
特定の条件を括弧で囲む必要がある場合があります。
Example 1:
Select all persons who are active and have an invoice
Person->Invoice (1 to Many)
SELECT * FROM person WHERE active=1 AND person_id IN (SELECT person_id FROM invoice)
Example 2:
Select all person who are active, do not have a cat, and have an invoice
SELECT * FROM person WHERE active=1 AND person_id NOT IN (SELECT person_id FROM people_with_cats) AND person_id IN (SELECT person_id FROM invoice)