2016-10-20 169 views
0

我的数据库中有两个结构相同但包含不同记录的表。每个表格都有“关键字”字段,其中包含逗号分隔的数据。如何在单个MySQL语句中使用GROUP_CONCAT和UNION

目前,我正在运行的2个MySQL查询来获得2个不同的结果,我再合并,使用下面的MySQL语句:

SELECT GROUP_CONCAT(keywords) keywords FROM table1 

SELECT GROUP_CONCAT(keywords) keywords FROM table2 

我敢肯定我应该能够使用单个MySQL语句获得我需要的内容,但是我所有尝试使用GROUP_CONCAT和UNION都失败了。

感谢任何指针/帮助。

+1

究竟是那些企图?他们是如何失败的?如果你能够显示你的努力并且我们不需要从零开始 –

回答

0

它是如此简单:

SELECT GROUP_CONCAT(keywords) keywords FROM table1 
UNION 
SELECT GROUP_CONCAT(keywords) keywords FROM table2 

Here is a fiddle

+0

这实际上是我首先尝试的,但问题是它返回2行而不是仅仅一行。 – JS77

+0

您将所有关键字放在一行中。你检查过我的小提琴吗? –

+0

是的,你的小提琴完美的工作,但当我在我的实际数据库上运行时,出于某种原因返回2行。 – JS77

1

试试这个:

SELECT CONCAT(GROUP_CONCAT(t1.keywords),',',GROUP_CONCAT(t2.keywords)) keywords FROM table1 t1, table2 t2 

如果你不想重复值,那么这将是这样的:

SELECT GROUP_CONCAT(DISTINCT t.keywords) FROM (
    SELECT t1.keywords FROM table1 t1 
    UNION 
    SELECT t2.keywords FROM table1 t2 
) t 
+0

这是工作,只是它增加了很多不在实际数据库中的重复项。例如,关键字“news”有2条记录,但上面的条目返回了24条条目! – JS77

+0

我更新了我的答案。 – Rarasen