【发布时间】:2017-09-13 21:30:00
【问题描述】:
我有以下用于抓取树节点及其父节点的 SQL:
SELECT
c.id
, c.tag
, (
SELECT
s.id
FROM treeTable s
WHERE s.lft < c.lft AND s.rgt > c.rgt
ORDER BY s.rgt - c.rgt ASC
LIMIT 1
) AS parent
FROM treeTable c;
问题是我也想在表中使用s.tag,但是我不能从子查询中选择两列。我该如何重构这个 SQL 以便能够选择两列?
我查看了很多关于可能尝试 LEFT JOIN 的资源,但无法使任何工作。由于需要在子查询中使用 ORDER BY 和 LIMIT,我想不出一个简单的分组操作
编辑:表的结构如下:
Field Type Collation Null Key Default Extra Privileges Comment
-------- ---------------- ----------------- ------ ------ ------- -------------- ------------------------------- ---------
id int(10) (NULL) NO PRI (NULL) auto_increment select,insert,update,references
tag varchar(255) latin1_swedish_ci NO (NULL) select,insert,update,references
lft int(11) (NULL) NO MUL (NULL) select,insert,update,references
rgt int(11) (NULL) NO MUL (NULL) select,insert,update,references
【问题讨论】:
标签: mysql sql hierarchical-data