Mysql连接查询

ASD*_*ASD 0 mysql join

SELECT
    description
FROM 
    diagnosis_mapping 
LEFT JOIN
    diagnosis_codes
ON
    diagnosis_codes.codeid = diagnosis_mapping.codeid

SELECT
    description
FROM 
    diagnosis_mapping 
LEFT JOIN 
    diagnosis_codes
ON
    diagnosis_codes.codeid = diagnosis_mapping.secondarycodeid
Run Code Online (Sandbox Code Playgroud)

如何合并这两个查询并在单个结果集中获取信息?首先,我需要与codeid匹配,然后我需要与secondarycodeid匹配到同一个mastertable来获取两者的描述.

Tat*_*nen 5

您可以在一个查询中执行两个连接,只需为表名提供一个别名,以便MySQL知道您想要获得的内容:

SELECT
    a.description desc_a,
    b.description desc_b
FROM 
    diagnosis_mapping 
LEFT JOIN
    diagnosis_codes a
ON
    a.codeid = diagnosis_mapping.codeid
LEFT JOIN 
    diagnosis_codes b
ON
    b.codeid = diagnosis_mapping.secondarycodeid
Run Code Online (Sandbox Code Playgroud)

在此示例中,a是第一个diagnosis_codes表和b另一个表的别名.当您为表提供别名时,MySQL(以及任何其他SQL感知数据库)基本上将它们视为两个单独的表,并独立地从它们中获取数据.

  • 最好给结果字段(`a.description desc_a,b.description desc_b`)一个别名,因为大多数框架返回一个关联数组(fi PHP的`mysql_fetch_assoc`)忽略表名组件,否则只返回一个`描述`字段. (2认同)