【问题标题】:Need assistance with Left Outer join?需要左外连接方面的帮助?
【发布时间】:2011-07-02 02:00:10
【问题描述】:
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能够检索值。这个连接是否正确,是否需要在左外连接中包含 where 部分才能检索值?

【问题讨论】:

    标签: sql sql-server-2005 sql-server-2008 left-join join


    【解决方案1】:

    如果您使用的是 TOP,您需要决定所有选择(全部三个)您的数据应如何排序,以便您可以控制要返回的值,也许还可以更具体地确定您过滤的内容。

    【讨论】:

    • 是的,没有保证查询将返回数据的顺序。任何时候使用 top 时都需要排序。
    【解决方案2】:

    一些观察。

    1. 您的 T1 SELECT 没有 ORDER BY 子句,那么您如何知道返回的是哪个 TOP 250?

    2. 如果T2返回NULL,那么T1和T2不匹配,可能是因为我的第一点?

    【讨论】:

      【解决方案3】:

      你到底想完成什么?

      你可以试试这样的:

      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
      

      【讨论】:

        猜你喜欢
        • 2015-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-11
        • 1970-01-01
        • 1970-01-01
        • 2012-10-23
        • 1970-01-01
        相关资源
        最近更新 更多