Mysql 在两张桌子上分组
我有两个表,具有独立的ID(不能通过联接连接),我想查询并获取两列的组集合 示例:表“a”的ID为:1、2、3。表“b”的ID为:10、11 最终结果应该是:1,2,3,10,11 我试过几个问题: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 这些查询将返回重复的
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
有什么帮助吗?