SQL同时查两个条件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL同时查两个条件相关的知识,希望对你有一定的参考价值。

需要使用条件语句。但感觉重新再查一遍太慢了。
比如说查id字段,条件txt=1和txt=2。把满足txt=1的赋值给@a,满足txt=2赋值给@b。只使用一个select,怎么做?

用case when试试。

select Id,case txt when 1 then @a赋值 when 2 then @b赋值 else '其他' end from 表名

参考技术A 不能使用 txt=1 or tex=2 这样的条件吗

在 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同时查两个条件的主要内容,如果未能解决你的问题,请参考以下文章

sql同时满足两个条件的语法怎样写?要用where语句

如何根据不同的条件执行不同的SQL语句

mysql中如何查询同时符合两个条件的sql语句

在 Snowflake SQL 中同时满足两个条件时从 Select 中删除记录

当条件全部为空时,查询全部,当其中一个或两个条件为空时,为空的条件不查询,sql怎么写

比较两个(py)spark sql数据框并在保持连接列的同时有条件地选择列数据