gpt4 book ai didi

sql - 根据 case 条件在 where 子句中添加不同的条件

转载 作者:行者123 更新时间:2023-12-04 19:15:49 24 4
gpt4 key购买 nike

如果 A 列不为空,我应该添加一个条件,如果它为空,那么我应该添加另一个条件。像这样:

select *
from table t
where case when len(t.A) > 0 then t.A = (select B from anothertable )
else t.C = (select D from anothertable)

因为这不能编译,而且我不能在 WHERE 中使用 IF 子句,还有其他方法可以实现吗?

最佳答案

我们可以在 WHERE 子句中改写登录以使其工作:

SELECT *
FROM table_t
WHERE
(LEN(t.A) > 0 AND t.A IN (SELECT B FROM anothertable) ) OR
(LEN(t.A) <= 0) AND t.C IN (SELECT D FROM anothertable) );

为了解决@HoneyBadger 的评论,如果 anothertable 上的子查询返回多条记录,那么如果我们使用 t.A = (subquery),此查询将出错。如果您打算使用 equals,则必须确保子查询仅返回一条记录。您关于使用 WHERE IN 的建议可能会解决问题。

关于sql - 根据 case 条件在 where 子句中添加不同的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48019932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com