gpt4 book ai didi

mysql - 如何将多个 SQL 查询合并为一个

转载 作者:行者123 更新时间:2023-11-29 00:12:52 25 4
gpt4 key购买 nike

我想将多个查询的结果合并为一个,但我想知道这是否可能。第一个查询计算每个裁判在给定年份的比赛数量:

SELECT  count(1),ejl_refery.surname FROM  ejl_protocols 
left join ejl_refery on ejl_protocols.refery = ejl_refery.id
WHERE ejl_protocols.season = 2013 group by refery

第二个查询计算每次裁判指定的处罚次数:

SELECT  count(1),ejl_refery.surname FROM  ejl_protocols 
left join ejl_play_events on ejl_protocols.id = ejl_play_events.protocol_id
left join ejl_refery on ejl_protocols.refery = ejl_refery.id
WHERE ejl_protocols.season = 2013 and ejl_play_events.event_id in (3,4)
group by refery

我还有 1 个类似的查询。结果应该是一个 SQL,可以生成如下表:

Refery Surname | Number of games | Number of penalties | Number of cards |

我尝试了一些组合将其组合在一起,但它们都以语法错误结束。

最佳答案

您应该能够将每个查询视为一个派生表,并将它们连接在一起。您在查询中唯一要加入的是姓氏,但由于这是您的所有分组,所以应该无关紧要。

Select
g.surname,
g,games,
p.penalties

from
(SELECT count(1) as games,ejl_refery.surname FROM ejl_protocols
left join ejl_refery on ejl_protocols.refery = ejl_refery.id
WHERE ejl_protocols.season = 2013 group by refery) g
inner join
(SELECT count(1) as penalties,ejl_refery.surname FROM ejl_protocols
left join ejl_play_events on ejl_protocols.id = ejl_play_events.protocol_id
left join ejl_refery on ejl_protocols.refery = ejl_refery.id
WHERE ejl_protocols.season = 2013 and ejl_play_events.event_id in (3,4)
group by refery) p
on g.surname = p.surname

如果您有第三个查询,您可以使用相同的逻辑将其添加到那里。

关于mysql - 如何将多个 SQL 查询合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24194092/

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