我有以下聲明的mysql:合併兩列到兩列
SELECT disease.id, disease.name, disease_synonym.name FROM disease JOIN disease_synonym where diseaseId=code
的結果是具有ID和名字兩列的表。我怎麼能把這個變成只有一個id和名字的2列? (當然,該ID將現在多次出現)
再見,
尼科
我有以下聲明的mysql:合併兩列到兩列
SELECT disease.id, disease.name, disease_synonym.name FROM disease JOIN disease_synonym where diseaseId=code
的結果是具有ID和名字兩列的表。我怎麼能把這個變成只有一個id和名字的2列? (當然,該ID將現在多次出現)
再見,
尼科
兩種方式浮現在腦海中......
運行查詢兩次(一次名,並一次代名詞),然後聯合在一起的結果...
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
第一個作品。已經在這方面嘗試了一些東西,但這個更好。非常感謝你 – Nicolas 2011-06-06 09:55:00
我想你想SELECT disease.id, disease_synonym.name FROM ...
不是嗎?只顯示同義詞名稱?
'SELECT disease.id,disease.name FROM'?哪個名字你想要disease.name或disease_synonym.name? – Nemoden 2011-06-06 09:07:17
兩者。最終我想要這樣的東西: 表(ID,名稱):值: (1 | disease.name) (1 | disease_synonym.name)...對不起,如果這不是很可讀,評論不允許換行 – Nicolas 2011-06-06 09:24:06
聯合查詢可能是:在第一個查詢中選擇第1列和第2列;在第二個查詢中,您選擇第1列和第3列,並使用UNION組合它們的結果。 – 2011-06-06 09:42:21