在两个左连接的表中,如果要避免重复聚合列的值,可以使用子查询或者临时表来实现。
方法一:使用子查询
SELECT t1.group_id, t1.column1, t2.column2
FROM (
SELECT group_id, column1
FROM table1
GROUP BY group_id, column1
) AS t1
LEFT JOIN (
SELECT group_id, column2
FROM table2
GROUP BY group_id, column2
) AS t2 ON t1.group_id = t2.group_id
方法二:使用临时表
CREATE TABLE temp_table1 AS
SELECT group_id, column1
FROM table1
GROUP BY group_id, column1;
CREATE TABLE temp_table2 AS
SELECT group_id, column2
FROM table2
GROUP BY group_id, column2;
SELECT t1.group_id, t1.column1, t2.column2
FROM temp_table1 AS t1
LEFT JOIN temp_table2 AS t2 ON t1.group_id = t2.group_id;
DROP TABLE temp_table1;
DROP TABLE temp_table2;
以上两种方法都是先对每个表进行分组,然后再进行左连接操作,可以确保在两个表中不会出现重复的聚合列值。