0

我有如下的 SQL 查询设计。

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

但未按要求获得正确的输出,因为“输入”条件无法正常工作

4

2 回答 2

3

您需要一列进行比较。正确的语法是(注意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)
于 2013-01-25T06:07:47.517 回答
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)
于 2013-01-25T06:09:28.027 回答