2011-06-06 182 views
1

我有以下聲明的mysql:合併兩列到兩列

SELECT disease.id, disease.name, disease_synonym.name FROM disease JOIN disease_synonym where diseaseId=code 

的結果是具有ID和名字兩列的表。我怎麼能把這個變成只有一個id和名字的2列? (當然,該ID將現在多次出現)

再見,

尼科

+0

'SELECT disease.id,disease.name FROM'?哪個名字你想要disease.name或disease_synonym.name? – Nemoden 2011-06-06 09:07:17

+0

兩者。最終我想要這樣的東西: 表(ID,名稱):值: (1 | disease.name) (1 | disease_synonym.name)...對不起,如果這不是很可讀,評論不允許換行 – Nicolas 2011-06-06 09:24:06

+0

聯合查詢可能是:在第一個查詢中選擇第1列和第2列;在第二個查詢中,您選擇第1列和第3列,並使用UNION組合它們的結果。 – 2011-06-06 09:42:21

回答

4

兩種方式浮現在腦海中......


運行查詢兩次(一次名,並一次代名詞),然後聯合在一起的結果...

SELECT disease.id, disease.name FROM disease 

UNION ALL 

SELECT disease.id, disease_synonym.name FROM disease JOIN disease_synonym where diseaseId=code 


或者在兩行表上連接,並使用CASE語句做一個主軸...

SELECT 
    disease.id, 
    CASE WHEN pivot.field = 'name' THEN disease.name 
     WHEN pivot.field = 'syno' THEN disease_synonym.name 
    END 
FROM 
    disease 
INNER JOIN 
    disease_synonym 
    ON diseaseId=code 
CROSS JOIN 
    (SELECT 'name' AS field UNION ALL SELECT 'syno' AS field) AS Pivot 
+0

第一個作品。已經在這方面嘗試了一些東西,但這個更好。非常感謝你 – Nicolas 2011-06-06 09:55:00

0

我想你想SELECT disease.id, disease_synonym.name FROM ...不是嗎?只顯示同義詞名稱?