Mysql 在两张桌子上分组

Mysql 在两张桌子上分组,mysql,sql,concatenation,Mysql,Sql,Concatenation,我有两个表,具有独立的ID(不能通过联接连接),我想查询并获取两列的组集合 示例:表“a”的ID为:1、2、3。表“b”的ID为:10、11 最终结果应该是:1,2,3,10,11 我试过几个问题: SELECT CONCAT_WS(',', GROUP_CONCAT(a.id), GROUP_CONCAT(b.id)) AS combined FROM a, b SELECT GROUP_CONCAT(a.id, b.id) AS combined FROM a, b 这些查询将返回重复的

我有两个表,具有独立的ID(不能通过联接连接),我想查询并获取两列的组集合

示例:表“a”的ID为:1、2、3。表“b”的ID为:10、11

最终结果应该是:1,2,3,10,11

我试过几个问题:

SELECT CONCAT_WS(',', GROUP_CONCAT(a.id), GROUP_CONCAT(b.id)) AS combined FROM a, b

SELECT GROUP_CONCAT(a.id, b.id) AS combined FROM a, b
这些查询将返回重复的结果,尽管8as in,所有来自a的结果两次,所有来自b的结果两次)

GROUP\u CONCAT(DISTINCT[])

会有帮助的


试试
联合所有人

select group_concat(ab.id) as ids
from ((select id from a
      ) union all
      (select id from b
      )
     ) ab;
您的查询在表之间进行交叉联接,因此交叉联接后的数据是:

a.id        b.id
 1           10
 1           11
 2           10
 2           11
 3           10
 3           11
在所有联合后,数据为:

ab.id
  1
  2
  3
 10
 11

如果要复制,请使用
union all
。如果不需要重复,请使用
union
。 在这两种情况下,您需要的查询如下所示:

select group_concat(id) from
 (select id from a
  union
  select id from b) as ids;

下面的查询将生成您想要的结果。 您可以使用table_position动态列来决定哪张表在前面

 Select group_concat(id order by table_position) from 
   (
      select id, 1 as table_position from a
      union all
      select id, 2 as table_position from b
    )

使用
UNION
有什么帮助吗?