gpt4 book ai didi

mysql - 使用日期字段的年份部分进行多个 MYSQL 连接

转载 作者:行者123 更新时间:2023-11-29 22:24:53 24 4
gpt4 key购买 nike

我有 3 张 table :

事件(id、event_date、类型)

冠军(id、年份、player_id、类型)

玩家(id、fname、lname)

我想创建一个包含 2 列的图表。列出 events 表或 champions 表中存在的每一年(不重复)。另一个列出了给定年份的冠军姓名(如果存在)。我只想包含事件类型为夜间的行。

因此输出可能如下所示:

|Year|Champion|

|2015| (empty) | <---- no champion defined for 2015 yet, so column is empty

|2014| David Smith| <--- no events in the database for 2014, but a champion is defined, so he shows up in column

|2012| Jimmy Garland|

(2013 年没有赛事或冠军,因此跳过该行。)

我尝试了这个查询,但它最终给了我 2014 年的 2 行。其中一个的第二列是空的,另一个在第二列中有一个冠军。

SELECT DISTINCT EXTRACT(YEAR FROM events.event_date) AS evyear, champions.*, players.*
FROM events
LEFT JOIN champions ON EXTRACT(YEAR FROM events.event_date)=champions.year
LEFT OUTER JOIN players ON champions.player_id=players.id AND champions.type = 'night'
WHERE events.type = 'night'
ORDER BY evyear DESC

最佳答案

您看起来走在正确的轨道上,但您需要从子查询中获取所有事件年份。

select q.`year`, coalesce(concat(p.fname, ' ', p.lname), 'No Champion') champion from (
select distinct year(event_date) `year`
from events
) q
left join champions c
on q.`year` = c.`year` and c.type = 'night'
left join players p
on c.player_id = p.id

small demo here

关于mysql - 使用日期字段的年份部分进行多个 MYSQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30364883/

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