MySQL 在 WHERE 中使用来自 FROM 的子查询

MySQL use subquery from FROM in WHERE

我有一个关于 MySQL 的问题。我的脚本如下所示:

SELECT *
FROM (subQuery) AS q1
WHERE
    (SELECT something
     FROM q1
     WHERE id = q1.id-1) = x;

我的问题是在最后一个子查询中 table q1 是未知的。我该如何解决?

您无法比较结果中的行。您能做的最好的事情就是复制子查询,例如将其称为 q1b,然后将其加入 q1 on q1.id - 1 = q1b.id;然后在其中有类似 q1b.something = x 的东西(尽管它也可以在 ON 中)

temp tables 也有一些可能性;但是您仍然需要这两个连接,或者可能需要在 where 中使用相关的子查询。 ...如果存储在真正的临时 table 中,而不仅仅是一些 "dummy" table 中,您将需要两个副本。您不能在同一查询中两次使用相同的 TEMPORARY table。