EWi*_*ard 3 t-sql sql-server subquery
有人可以请教我一种过滤位于FROM子句中的子查询的方法吗?我希望它看起来像这样:
SELECT *
FROM TABLE_A
LEFT JOIN (TOP 8 TABLE_B) ON TABLE_B.id = TABLE_A.id
Run Code Online (Sandbox Code Playgroud)
Rem*_*anu 17
如果需要关联子查询,则需要使用APPLY而不是JOIN:
SELECT *
FROM TABLE_A
CROSS APPLY (
SELECT TOP (8) *
FROM TABLE_B
WHERE TABLE_B.id = TABLE_A.id
ORDER BY ...) AS B;
Run Code Online (Sandbox Code Playgroud)
对于 A中的每一行,这将为您提供B中的前8行.我看到的其他解决方案将为您提供A与来自B 的全球 TOP 8 之间的JOIN
SELECT *
FROM TABLE_A AS a
LEFT JOIN (SELECT TOP 8 id, field1, field2
FROM TABLE_b) AS b
ON a.id = b.id
Run Code Online (Sandbox Code Playgroud)
应该管用。
| 归档时间: |
|
| 查看次数: |
12876 次 |
| 最近记录: |