SELECT ID
(
Select ID from Table1
where Table1.ID=@ID
)T1
Left Outer join
(
Select top 1 Table2.ID from Table2 join Table3 on table3.ID=Table2.ID
order by Table2.ID DESC
)T2 on T2.ID=T1.ID
这只是我和我的实际存储过程的一个例子,我面临的问题是我无法从T2中检索它只返回为NULL但是当我更改它时,前5我是能够检索值。这个连接是否正确,是否有必要将左外连接内的部分放在哪里才能检索值?
答案 0 :(得分:2)
如果您正在使用TOP,您需要决定所有选择(全部三个)如何订购数据,这样您就可以控制要回收的值,也可以更具体地说明您过滤的内容。
答案 1 :(得分:1)
一些观察结果。
您的T1 SELECT没有ORDER BY子句,那么您如何知道返回哪个TOP 250?
如果T2返回NULL,那么T1和T2之间没有匹配,可能是由于我的第一点?
答案 2 :(得分:1)
你到底想要完成什么?
您可以尝试这样的事情:
SELECT
TOP 250 Table1.ID
FROM
Table1
LEFT OUTER JOIN
Table2 ON Table2.ID = Table1.ID
LEFT OUTER JOIN
Table3 ON Table3.ID = Table2.ID
WHERE
Table1.ID = @ID
ORDER BY
Table1.ID DESC