mysql - 在mysql中加入同一张表的子查询
问题描述
我正在尝试使用连接和子查询从我的表中获取一些数据。我的场景是:我有一个表 ABC,其结构如图所示
我想要身份证、姓名、父母姓名和配偶姓名,如果有任何成员不是配偶的话。我试过的查询是:
SELECT E1.name AS memname,
E2.name AS parentname
FROM ABC AS E1
LEFT OUTER JOIN ABC AS E2 ON E2.id = E1.parent_id
where E1.relation != "Spouse"
此查询返回成员的 id、name 和 parentname 的正确行。现在我需要重写查询,以便如果任何成员有配偶,我也会得到配偶姓名。预期输出为:
我尝试使用子查询来选择配偶姓名,但这是错误的。谁能帮我这个?提前致谢
解决方案
您可以再进行一次自加入以获得配偶姓名。
SELECT E1.name AS memname,
E2.name AS parentname,
E3.name AS spouse
FROM ABC AS E1
LEFT OUTER JOIN ABC AS E2 ON E2.id = E1.parent_id
LEFT OUTER JOIN ABC AS E3 ON E3.parent_id = E1.id AND
E3.relation = 'Spouse'
where E1.relation <> 'Spouse'
推荐阅读
- arrays - 我正在尝试根据输入字段字符中写入的内容更改表显示的内容
- php - 限制在 WhereHas 内
- solr - 使用 API 更改 SolrCloud 中的默认查询字段
- javascript - 引导工具提示不会被破坏
- python - 如何用 numpy 创建新维度?(使用快速操作)
- android - android:如何从媒体提供程序路径获取文件路径和文件名
- python - numpy 数组上的高效行操作
- javascript - MediaSource API:视频未播放
- c++ - 如何在 C++ 中使用回调?
- javascript - 如何使用 JavaScript 为列表项设置动画以一一显示?