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

时间:2016-01-14 23:50:19

标签: mysql subquery

我对MySQL有疑问。我的脚本看起来像这样:

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

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

1 个答案:

答案 0 :(得分:0)

您无法比较结果中的行。您可以做的最好是复制子查询,例如将其称为q1b,并将其连接到q1 on q1.id - 1 = q1b.id;那么在q1b.something = x 之类的地方(虽然也可以在ON中)

临时表也有一些可能性;但你仍然需要两个连接,或者可能在哪里工作的相关子查询。 ...如果存储在真正的TEMPORARY表中,而不仅仅是一些" dummy"你放下桌子后,你需要两份。您不能在同一查询中两次使用相同的TEMPORARY表。