2016-10-20 167 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