我有一个查询,其中包括LIMIT
主表和JOIN
.
我的问题是:之前会发生什么?查询找到的x
行LIMIT
然后JOIN
对这些行执行或首先JOIN
在所有行上执行然后再执行LIMIT
?
LIMIT
适用于应用它的查询。它将在该查询中的 s 之后应用于查询JOIN
,但如果派生表被编辑到其他表,则 that/those (s) 紧随其后。JOIN
JOIN
例如
SELECT ..
FROM (SELECT ..
FROM TABLE1 T1
JOIN TABLE2 T2 ON ..
LIMIT 10) X
JOIN OTHERTABLE Y
LIMIT 20;
JOIN
T1 和 T2 之间首先出现LIMIT
10 应用于上一步的结果,因此只有来自该派生表的 10 条记录将用于外部查询LIMIT
20 应用于JOIN
X 和 Y 之间的结果虽然 LIMIT 是PostgreSQL、MySQL和SQLite的特定关键字,但 TOP 关键字和SQL Server中的处理方式相同。
首先在所有行上执行 JOIN,然后在 LIMIT 之后