如何在mysql中最内部的子查询where子句中使用外部表列。。?
我有一个MySQL查询,我需要在其中运行一个子查询,然后再运行一个子查询,如下所示:如何在mysql中最内部的子查询where子句中使用外部表列。。?,mysql,Mysql,我有一个MySQL查询,我需要在其中运行一个子查询,然后再运行一个子查询,如下所示: SELECT id, (SELECT COUNT(*) AS total FROM (SELECT * FROM t3 WHERE t3.abcId = t1.id) t2 WHERE /*conditions*/) as total FROM t1 WHERE /* condtions */; SELECT id, @var := t1.id, (SEL
SELECT id,
(SELECT COUNT(*) AS total FROM
(SELECT * FROM t3 WHERE t3.abcId = t1.id) t2
WHERE /*conditions*/) as total
FROM t1 WHERE /* condtions */;
SELECT id, @var := t1.id,
(SELECT COUNT(*) AS total FROM
(SELECT * FROM t3 WHERE t3.abcId = @var) t2
WHERE /*conditions*/) as total
FROM t1 WHERE /* conditions */;
现在这个查询抛出错误未知列t1.id.
请告诉任何人如何在最内部的子查询where
子句中使用t1表
列。我还尝试通过@变量传递t1列值,如下所示:
SELECT id,
(SELECT COUNT(*) AS total FROM
(SELECT * FROM t3 WHERE t3.abcId = t1.id) t2
WHERE /*conditions*/) as total
FROM t1 WHERE /* condtions */;
SELECT id, @var := t1.id,
(SELECT COUNT(*) AS total FROM
(SELECT * FROM t3 WHERE t3.abcId = @var) t2
WHERE /*conditions*/) as total
FROM t1 WHERE /* conditions */;
但在这种情况下,@var
没有对每一行进行更新,即total返回的值与第一行的值相同。请对此提出任何可行的解决方案
注意:-我无法更新查询流,因为它的计算非常复杂。上述查询只是原始查询流的一个示例。您不能这样做,如果外部查询超过1级,SQL引擎不允许使用外部查询。我可以建议一个替代方案,避免以下子选项之一:
SELECT t1.id ,
(SELECT COUNT(*) FROM t3
WHERE t3.abcID = t1.id
AND /*conditions */) as total
FROM t1
WHERE /*conditions */
最里面的查询可以是
从t3、t1中选择列名称,其中t3.abcid==t1.id您不能在子选择中使用外列,在获得错误后,您已经了解到这一点。我要求任何替代方案,因为我必须这样做。它不能解决我的目的。。会破坏计算