gpt4 book ai didi

mysql - 没有 double 的 sql 查询连接

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

我正在为一个查询而苦苦挣扎,
表1

startdate  | enddate   | name    | examination 
2020-02-01 | 2020-02-01| JohnDoe | xyz

表2
begindate  | enddate    | name    | mutation 
2020-02-01 | 2020-02-07 | JohnDoe | Away
2020-03-01 | 2020-03-01 | JohnDoe | Away

查询:
SELECT a.begindate
, a.enddate
, IF((a.begindate BETWEEN b.begindate AND b.enddate ), b.mutation, a.exam) value
FROM table1 a
JOIN table2 b
ON a.name = b.name

结果
a.begindate | a.enddate  | value
2020-02-01 | 2020-02-01 | Away
2020-02-01 | 2020-02-01 | xyz

但我希望只看到 table1 中的所有记录,如果表 1 中的 begindate 介于 begindate 和 enddate 之间,则显示 table2.mutation 的值而没有双记录。尝试左/右连接但没有结果。

我怎样才能解决这个问题?

最佳答案

使用 LEFT JOIN并设置条件 a.begindate between b.begindate and b.enddate在 ON 子句中:

select 
a.begindate, a.enddate,
case when b.name is not null then b.mutation else a.exam end as value
from table1 as a
left join table2 as b on a.name = b.name and a.begindate between b.begindate and b.enddate

而不是 case您还可以使用的表达式:
coalesce(b.mutation, a.exam)

关于mysql - 没有 double 的 sql 查询连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60381534/

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