MySQL:是否可以将GROUP-BY的结果加入两个SELECT?

Dar*_*uid 6 mysql sql join

我有两个单独的SELECT语句,它们分别是GROUP-BY,例如:

SELECT x, y, z FROM a GROUP BY x
SELECT x, n, o FROM b GROUP BY x
Run Code Online (Sandbox Code Playgroud)

我非常希望将这两个SELECT连接在一起以组合它们的列,例如:

SELECT x as x1, y, z FROM a GROUP BY x 
LEFT JOIN (
  SELECT x as x2, n, o FROM b GROUP BY x)
ON x1=x2;
Run Code Online (Sandbox Code Playgroud)

这可能吗?我问,因为MySQL在抱怨

您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在'LEFT JOIN SELECT x'附近使用正确的语法作为x2

如果这是可能的,任何关于我的语法错误的想法?

非常感谢!

Jos*_*iah 6

有几种方法可以实现这一目标:

  1. 最好:在分组之前加入表,如下所示:
    选择轴、y、z、n、o
      FROM a INNER JOIN b ON ax = bx
     按 ax、bx 分组;
    
  2. 从两个查询中选择作为子查询,如下所示:
    选择 *
    FROM (SELECT x, y, z FROM a GROUP BY x) AS a
    INNER JOIN(从 b GROUP BY x 中选择 x、n、o)AS b
            ON ax = bx;
    


Vin*_*vic 5

这有效

select * from (
    (select 1 a,2 b,3 c) t1 left join (select null a,2 b,5 c) t2 on (t1.b=t2.b)
);
Run Code Online (Sandbox Code Playgroud)

或者,

select * from (
    (select 1 a,2 b,3 c) t1 left join (select null a,2 b,5 c) t2 using (b)
);
Run Code Online (Sandbox Code Playgroud)

两者都导致了

+---+---+---+------+---+---+
| a | b | c | a    | b | c |
+---+---+---+------+---+---+
| 1 | 2 | 3 | NULL | 2 | 5 |
+---+---+---+------+---+---+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)