【问题标题】:DISTINCTROW equivalent in SQL ServerSQL Server 中的 DISTINCTROW 等效项
【发布时间】:2011-12-19 13:36:20
【问题描述】:

能否请您告诉我是否有任何相当于 Access 的 DISTINCTROW for SQL Server?

【问题讨论】:

    标签: sql-server ms-access-2007


    【解决方案1】:

    通过阅读 distinctrow 上的文档,您似乎想要一个 exists 子句或(为了获得更好的性能)一个连接:

    SELECT * FROM A
    WHERE EXISTS(SELECT * FROM B WHERE B.a_id = A.a_id)
    
    SELECT DISTINCT A.* FROM A
    INNER JOIN B ON A.a_id = B.a_id
    -- corrected, should be inner join here
    

    【讨论】:

    • +1 用于阅读文档,但您关于 EXISTS 与 JOIN 性能的陈述不正确。
    • 我发誓我见过他们确实有很大不同的情况。它们当然会生成不同的执行计划。
    • 查看EXISTS 的执行计划,它无论如何都是作为连接(半连接)实现的,可以是散列、合并或嵌套循环,因此没有理由期望内连接更好.
    【解决方案2】:

    SQL server 不支持DISTINCTROW,你应该使用关键字DISTINCT

    但是 Chris Shain 给出的答案给了你想要的。

    【讨论】:

    • Access 还有一个 DISTINCT 子句,其行为与 SQL 的相同。 DISTINCTROW 不同。
    【解决方案3】:

    您可以只使用关键字DISTINCT。

    【讨论】:

      猜你喜欢
      • 2011-04-30
      • 2023-03-07
      • 2020-07-22
      • 2015-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-10
      • 2011-03-13
      相关资源
      最近更新 更多