gpt4 book ai didi

mysql - 在 WHERE 子句中使用来自 COALESCE 的别名来自 SELECT

转载 作者:行者123 更新时间:2023-12-03 20:10:12 24 4
gpt4 key购买 nike

DB Fiddle

CREATE TABLE logistics (
id int primary key,
campaign VARCHAR(255),
inbound_date VARCHAR(255),
outbound_date VARCHAR(255)
);

INSERT INTO logistics
(id, campaign, inbound_date, outbound_date)
VALUES
("1", "C001", "2019-01-01", "2019-02-08"),
("2", "C001", "2019-05-10", "2019-05-12"),
("3", "C001", "2019-06-12", "2019-06-15"),
("4", "C001", "2019-08-13", "2019-08-20"),
("5", "C001", "2019-11-14", "2019-11-22");

在上表中,我有列 inbound_dateoutbound_date对于日期值。
在我的查询中,我 coalesce他们到一列名为 event_date .

现在,我想使用 coalesce 的别名在 WHERE我的查询子句,但我收到错误 Unknown column 'event_date' in 'where clause' :
SELECT
campaign,
coalesce(inbound_date, outbound_date) as event_date
FROM logistics
WHERE
event_date BETWEEN "2019-06-01" AND "2019-10-01"

我知道我可以通过使用 inbound_date 来解决这个问题。和 outbound_date作为 WHERE 中的两个独立条件子句,但没有更聪明的方法使用 coalesce 的别名?

最佳答案

我相信你可以这样做:

SELECT campaign, event_date
FROM (
SELECT
campaign,
coalesce(inbound_date, outbound_date) as event_date
FROM logistics
)
WHERE
event_date BETWEEN "2019-06-01" AND "2019-10-01"

(不确定这是否特定于 MySQL,但在通用 SQL 中,我希望单引号不会在这些字符串周围加倍。)

请注意,无论如何,我认为这不太可能在任一日期列上使用索引。

关于mysql - 在 WHERE 子句中使用来自 COALESCE 的别名来自 SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60489903/

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