SQL查询时如何从同一表的同一列选取两个不同值同时展示
修改方案
你需要二次关联ciclista表匹配亲属信息,给两个不同的ciclista表设置别名区分骑行者本人和亲属即可实现需求,修改后的SQL如下:
SELECT parente_ciclista.nome AS 亲属姓名, ciclista.nome AS 骑行者姓名, ciclista.idc, local.nome_local, ciclista.idade FROM ciclista INNER JOIN local ON ciclista.idl_residencia = local.idl INNER JOIN parente ON ciclista.idc = parente.idc_b INNER JOIN ciclista parente_ciclista ON parente.ida_a = parente_ciclista.idc WHERE ciclista.idade < 18 AND local.nome_local LIKE '%Covil%' AND parente.tipo LIKE 'm%'
说明
- 第二次关联的
ciclista表别名设为parente_ciclista,通过parente.ida_a = parente_ciclista.idc匹配到对应亲属的记录,取出其nome字段就是你需要的亲属姓名 - SELECT字段第一位设置为亲属姓名,符合你要把该字段放在查询结果最前面的要求
- 原隐式表关联改为显式JOIN写法,逻辑更清晰,也可以避免漏写关联条件导致的笛卡尔集问题;如果需要保留没有匹配亲属的骑行者记录,可以将最后一个INNER JOIN改为LEFT JOIN
内容的提问来源于stack exchange,提问作者José Carrilho
相关产品推荐
相关产品推荐

