首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NOT IN AND IN condition mysql

NOT IN AND IN condition mysql
EN

Stack Overflow用户
提问于 2013-01-25 14:05:16
回答 2查看 70关注 0票数 0

我有SQL查询设计如下。

代码语言:javascript
复制
SELECT (THIS ITEMS) 
FROM (TABLES) 
WHERE(SOME CONDITION) AND NOT IN (CONDITION) AND IN (CONDITION)

但是没有按照要求获得正确的输出,因为“IN”条件没有正确工作

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-25 14:07:48

您需要一个要比较的列。正确的语法是(请注意column_expression):

代码语言:javascript
复制
SELECT <select_list>
FROM <table_expression>
WHERE <column_expression> [NOT] IN (<comparison_list>)

例如,

代码语言:javascript
复制
SELECT col1, col2
FROM tab
WHERE col3 IN ('yes', 'no')
AND col4 NOT IN ('no', 'maybe')

注您也可以使用单列结果集而不是静态比较列表,如下所示:

代码语言:javascript
复制
SELECT col1, col2
FROM tab
WHERE col3 IN (SELECT filterValues FROM table2)

但是在这种情况下使用EXISTS子句要好得多:

代码语言:javascript
复制
SELECT col1, col2
FROM tab
WHERE EXISTS (SELECT 1 FROM table2 WHERE filterValues = col3)
票数 3
EN

Stack Overflow用户

发布于 2013-01-25 14:09:28

在某些情况下,您可能需要使用括号。

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14516262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档