[英]mysql: merge two columns into two rows
我有以下声明
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 语句执行 pivot...
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
我想你想要SELECT disease.id, disease_synonym.name FROM...
不是吗? 只显示同义词名称?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.