【发布时间】:2016-11-14 02:17:15
【问题描述】:
我正在使用 Union All 进行查询,并且我想确保将重复的行添加到结果查询中。使用 Union All 时,无法正确添加重复行。在谷歌搜索“sql union with duplicates”时,它指出:“Union 将删除重复项。Union All 不会。您在查询的第一部分中还没有重复项(可能由左连接生成)。据我了解,UNION 它不会添加到结果集中已经存在的行中,但不会删除第一个数据集中已经存在的重复项。”就我而言,我确实想添加已经在其中的结果集行。我该怎么做?
这是我的查询:
SELECT player_name_fkey, school_name_fkey, score_simple, sum(score_simple) over (partition by player_name_fkey) as sum_scores
FROM (
SELECT player_name_fkey, school_name_fkey, SUM(score) as score_simple
FROM simple LEFT JOIN players on players.name=simple.player_name_fkey
WHERE category='Cadet' AND gender='Féminin' GROUP BY player_name_fkey, school_name_fkey
UNION ALL
SELECT player_name_fkey, school_name_fkey, SUM(score) as score_simple
FROM double LEFT JOIN players on players.name=double.player_name_fkey
WHERE category='Cadet' AND gender='Féminin' GROUP BY player_name_fkey, school_name_fkey) t1
GROUP BY player_name_fkey, school_name_fkey, score_simple
提前感谢您的帮助!
【问题讨论】:
-
尝试删除末尾的
GROUP BY子句。 -
像魅力一样工作,谢谢!
标签: sql postgresql