SQL - 我需要制定一个条件来限制选择只显示与这两个条件相对应的行
Posted
技术标签:
【中文标题】SQL - 我需要制定一个条件来限制选择只显示与这两个条件相对应的行【英文标题】:SQL - I need make a condition that restrict the select to show only lines that correspond both conditions 【发布时间】:2021-06-21 12:35:03 【问题描述】:我有我的选择,我需要两个条件,它们是:
and item.group not in (100)
and item.subgroup not in (120)
我需要的是,选择只显示两个条件都匹配的项目。 以我写的方式,来自组 90 和子组 120 的项目没有显示,但它们需要显示。 有人能帮我吗? :D 我不知道如何使这两个条件相互匹配。
【问题讨论】:
【参考方案1】:你可以使用:
and not (item.group in (100) and item.subgroup in (120))
或者等效地,or
:
and (item.group not in (100) or item.subgroup not in (120))
请注意,如果值可以是 NULL
,则可能需要调整这两个值 - 取决于您希望如何处理 NULL
值。
【讨论】:
非常感谢!工作得很好【参考方案2】:怎么样
where (group, subgroup) not in ((100, 120))
例如(基于 Scott 的emp
表):
SQL> select deptno, ename, job from emp order by deptno, job;
DEPTNO ENAME JOB
---------- ---------- ---------
10 MILLER CLERK
CLARK MANAGER
KING PRESIDENT
20 SCOTT ANALYST
FORD ANALYST
ADAMS CLERK --> omit DEPTNO = 20
SMITH CLERK --> and JOB = CLERK
JONES MANAGER
30 JAMES CLERK
BLAKE MANAGER
MARTIN SALESMAN
WARD SALESMAN
ALLEN SALESMAN
TURNER SALESMAN
14 rows selected.
让我们试试吧:
SQL> select deptno, ename, job from emp
2 where (deptno, job) not in ((20, 'CLERK'))
3 order by deptno, job;
DEPTNO ENAME JOB
---------- ---------- ---------
10 MILLER CLERK
CLARK MANAGER
KING PRESIDENT
20 SCOTT ANALYST --> right; no Adams nor
FORD ANALYST --> Smith (clerks) in DEPTNO = 20
JONES MANAGER --> any more
30 JAMES CLERK
BLAKE MANAGER
ALLEN SALESMAN
WARD SALESMAN
TURNER SALESMAN
MARTIN SALESMAN
12 rows selected.
SQL>
【讨论】:
非常感谢您的帮助!【参考方案3】:试试这个:
where item.group not in (100, 120) and item.subgroup not in (100, 120)
【讨论】:
以上是关于SQL - 我需要制定一个条件来限制选择只显示与这两个条件相对应的行的主要内容,如果未能解决你的问题,请参考以下文章