sql 查询同时满足一列中两个条件的记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 查询同时满足一列中两个条件的记录相关的知识,希望对你有一定的参考价值。
如表
列1列2
a 1
a 3
b 1
c 3
需要查询列2中同时有1 和3 的列1记录, 上表查询后应只有a
select
*
from
表名
where
a<>b
and
a<>1
记住a和b的类型一定要相同才行 参考技术A 我给你一个简单快捷的写法,你运行试试。。。
select 列1 from 表 where 列2 in ('1','3'); 参考技术B select 列1 from 表 group by 列1 having 列2= 1 or 列2= 3 and count(*)>=2本回答被提问者采纳 参考技术C select 列1 from 表 group by 列1
having 列2=1 and 列2=3
在 Snowflake SQL 中同时满足两个条件时从 Select 中删除记录
【中文标题】在 Snowflake SQL 中同时满足两个条件时从 Select 中删除记录【英文标题】:Remove records from Select when both conditions are met in Snowflake SQL 【发布时间】:2021-08-12 04:21:06 【问题描述】:当满足此条件时,我正在尝试从 CTE 中删除记录 -
删除针对职位 ID 0000087544 的时间表,支付代码为 SUPA
select * from timesheets where ( (external_payroll_code not in ('SUPA')) and (position_id not in ('0000087544')) )
正在删除所有记录 position_id = '0000087544',而我只希望删除 external_payroll_code = 'SUPA' 的那些职位 ID。
有没有一种方法可以将 SELECT 中的条件排除指定为 Snowflake SQL 中的子查询,或者编写 JOIN 子句作为唯一出路。
任何提示将不胜感激。谢谢!
输入
Employee ID | POSITION ID | EXTERNAL PAYCODE |
---|---|---|
1A | 0000087544 | SUPA |
1B | 00000888888 | SUPA |
输出
Employee ID | POSITION ID | EXTERNAL PAYCODE |
---|---|---|
1B | 00000888888 | SUPA |
【问题讨论】:
我认为这可以通过一些 AND/OR 逻辑来完成。你能告诉我们一些输入数据和期望的结果吗? 【参考方案1】:您只需要稍微更改一下 AND/OR 逻辑即可。
with timesheets as (select $1 employee_id, $2 position_id, $3 external_payroll_code from values ('1A', '0000087544', 'SUPA'), ('1B', '00000888888', 'SUPA'))
select * from timesheets where not (external_payroll_code in ('SUPA') and position_id in ('0000087544'))
EMPLOYEE_ID POSITION_ID EXTERNAL_PAYROLL_CODE
1B 00000888888 SUPA
【讨论】:
感谢 Nat,感谢您的回答,该解决方案有效。由于团队正在等待交货以进行快速修复,因此我在表中添加了一个额外的列作为exclude_flag ``` 然后在最后的 cte 操作中只选择了 exclude_flag 标记为'N'的记录以上是关于sql 查询同时满足一列中两个条件的记录的主要内容,如果未能解决你的问题,请参考以下文章