我有一个像
这样的查询SELECT lft,rgt
FROM `navigation`
WHERE `slug` = 'case-studies';
此查询的输出
lft rgt
28 89
现在我想在同一个表中的另一个查询中使用此结果
SELECT * FROM `navigation` WHERE `lft` between 28 and 89
但我想动态地这样做,所以我不需要通过"左","右"
一次又一次的价值
现在我想知道,我怎么能做下面这样的事情。
SELECT * FROM `navigation` WHERE `lft` between :lft and :rgt
答案 0 :(得分:2)
您可以使用自我加入:
SELECT t1.*
FROM `navigation` t1
INNER JOIN `navigation` t2
ON t1.`lft` between t2.`lft` and t2.`rgt`
WHERE t2.`slug` = 'case-studies';
答案 1 :(得分:1)
试试这个:
SELECT n.*
FROM `navigation` AS n
CROSS JOIN (
SELECT lft, rgt
FROM `navigation`
WHERE `slug` = 'case-studies') AS t
WHERE n.`lft` between t.lft and t.rgt
只要子查询返回一条记录,您就可以使用此CROSS JOIN
获取lft
,rgt
值。