SQL Server 中的 DISTINCTROW 等效项

Posted

技术标签:

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

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

【问题讨论】:

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

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

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

【讨论】:

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

您可以只使用关键字DISTINCT

【讨论】:

以上是关于SQL Server 中的 DISTINCTROW 等效项的主要内容,如果未能解决你的问题,请参考以下文章

访问报告忽略查询中的 DISTINCROW

SQL语法介绍

sql执行顺序

SELECT 语句语法

sql注入绕过union select过滤

SQL基础语法—select语句