繁体   English   中英

mysql:将两列合并为两行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM