You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在同一张表中查询指定子项的父项信息 [SQL]

如何通过子项标题查询自关联表的父项信息?

你的问题出在没有对主表添加过滤条件,原SQL会返回表中所有记录的关联结果。要实现根据指定子项标题查询其父项,只需要在原语句基础上添加针对主表a的WHERE条件即可。

方案1:获取子项及其父项的完整信息

如果你想同时看到子项本身的信息和对应的父项内容,修改后的SQL如下:

SELECT a.nom_ele_id, a.nom_ele_title, b.nom_ele_title AS 'nom_parent' 
FROM `immo_nomenclature_element` AS a 
LEFT JOIN `immo_nomenclature_element` AS b on a.`nom_ele_parent_id` = b.`nom_ele_id`
WHERE a.nom_ele_title = "type de sol"

执行后会返回:

+-----------+-----------------+-----------+
|nom_ele_id | nom_ele_title   | nom_parent|
+===========+=================+===========+
| 6957      | type de sol     | SOL       |
+-----------+-----------------+-----------+

方案2:仅获取父项的信息

如果只需要父项的ID和标题,不需要子项数据,可以简化查询:

SELECT b.nom_ele_id AS parent_id, b.nom_ele_title AS nom_parent
FROM `immo_nomenclature_element` AS a
INNER JOIN `immo_nomenclature_element` AS b ON a.nom_ele_parent_id = b.nom_ele_id
WHERE a.nom_ele_title = "type de sol"

这里用INNER JOIN代替LEFT JOIN更合适,因为子项必然有父项(根据你的数据示例),这样只会返回存在关联的父项记录。

为什么原SQL会返回全表?

原SQL没有添加WHERE条件时,LEFT JOIN会将表中每一条记录都和其父项进行关联,所以返回了所有行的结果。添加WHERE a.nom_ele_title = "type de sol"后,只会筛选出子项为"type de sol"的记录,再关联对应的父项数据。

内容的提问来源于stack exchange,提问作者GuiEpi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 23:29:05