2016-10-20 13 views
0

データベースに2つのテーブルがあり、構造は同じですがレコードは異なります。各テーブルには、カンマで区切られたデータを含むフィールド 'keywords'があります。GROUP_CONCATとUNIONを単一のMySQLステートメントで使用する方法

瞬間、私は、私はその後、マージ2つの異なる結果を得るために、2つのMySQLのクエリを実行し、次の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

これは実際に私が最初に試したことでしたが、問題はそれがちょうど1つではなく2つの行を返すということです。 – JS77

+0

すべてのキーワードが1つの行に表示されます。あなたは私のバイブルをチェックしましたか? –

+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

関連する問題