我想像这样使用左外连接:
SELECT ...
FROM Table1
LEFT OUTER JOIN
(SELECT only e.g. 3rd record... , SomeField FROM Table2) tbl2
ON Table1.SomeField = tbl2.SomeField
如果我需要子查询不仅仅选择Table2中的第3条记录,而是选择具有SomeField = Table1.SomeField的Table2记录中的第3条记录,该怎么办? 感谢。
答案 0 :(得分:0)
如果这是sql server 2005或更新版本,您可以使用row_number():
LEFT JOIN
(
select *
from
(
select *,
row_number() over (order by something) rn
from Table2
where Table2.Column = Table1.Column
) a
where a.rn = 3
) a
不幸的是,你需要将它嵌套到更深的层次,因为你不能直接在条件中使用row_number。
修改强>
我的坏 - 我没有真正注意到加入部分。如果要加入派生表,请使用:
LEFT JOIN
(
select *,
row_number() over (partition by SomeField order by something) rn
from Table2
) tbl2
ON Table1.SomeField = tbl2.SomeField
AND tbl2.rn = 3
注意:你需要在row_number()中使用ORDER BY来保持一致。