如何在另一个查询中使用一个查询的结果

时间:2016-07-14 05:56:39

标签: mysql

我有一个像

这样的查询
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

2 个答案:

答案 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获取lftrgt值。

相关问题