Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在mysql中最内部的子查询where子句中使用外部表列。。?_Mysql - Fatal编程技术网

如何在mysql中最内部的子查询where子句中使用外部表列。。?

如何在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

我有一个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,  
    (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

您不能在子选择中使用外列,在获得错误后,您已经了解到这一点。我要求任何替代方案,因为我必须这样做。它不能解决我的目的。。会破坏计算