2013-01-25 26 views
0

我有SQL查詢設計如下。不在,並在條件mysql

SELECT (THIS ITEMS) 
FROM (TABLES) 
WHERE(SOME CONDITION) AND NOT IN (CONDITION) AND IN (CONDITION) 

,但沒有得到所需正確的輸出,爲「IN」條件不正確

+2

發佈您的完整SQL查詢 –

+0

您在'CONDITION'中有NULL值嗎? –

+0

嗨,Varinder,想知道我是否可以使用其他操作符而不是'IN' – Parab

回答

3

wrking你需要一列來比較。正確的語法(注意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) 

它更優化我們e EXISTS子句:

SELECT col1, col2 
FROM tab 
WHERE EXISTS (SELECT 1 FROM table2 WHERE filterValues = col3) 
0

您可能需要圍繞某些條件的括號。

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)