gpt4 book ai didi

sql - WHERE 子句中是否可以有 CASE WHEN THEN SELECT

转载 作者:行者123 更新时间:2023-12-02 04:32:48 25 4
gpt4 key购买 nike

我只是想知道是否可以以这种形式在 WHERE 子句中使用 CASE 语句...

SELECT *
FROM TABLEA
WHERE date between '2014-02-01' and '2014-02-28' and
CASE
WHEN date>'2014-02-28' THEN (SELECT FROM TABLEC WHERE...)
ELSE (SELECT FROM TABLE B WHERE...)
END

谢谢!

最佳答案

是的,在以下情况下这是可能的:

  1. 子查询返回一个值。
  2. 存在外部比较,例如 =>

case 语句返回标量值。具有一列和一个值的行“等同于”标量值。因此,以下内容是允许的:

where col = (CASE WHEN date > '2014-02-28' THEN (SELECT max(col2) FROM TABLEC WHERE...)
ELSE (SELECT min(col3) FROM TABLE B WHERE...)
END)

但是,您可能想要执行条件 in 语句。避开案例:

where date > '2014-02-28' and col in (SELECT max(col2) FROM TABLEC WHERE...) or
date <= '2014-02-28' and col in (SELECT min(col3) FROM TABLE B WHERE...)

关于sql - WHERE 子句中是否可以有 CASE WHEN THEN SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22644613/

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