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