从Sql Server 2008表中选择唯一的行
我试图从具有重复项的sql表中选择唯一的行。我有一个列OrderId,这对于每一行都应该是唯一的。因此,我尝试选择具有唯一orderId的所有列(30)。我尝试了这个查询,但它返回了所有行。groupBy也一样从Sql Server 2008表中选择唯一的行,sql,sql-server-2008,Sql,Sql Server 2008,我试图从具有重复项的sql表中选择唯一的行。我有一个列OrderId,这对于每一行都应该是唯一的。因此,我尝试选择具有唯一orderId的所有列(30)。我尝试了这个查询,但它返回了所有行。groupBy也一样 "SELECT DISTINCT (OrderId)AS[OrderId], * from tableName" 你的问题很模糊。您希望从具有重复项的表中获取唯一行。哪一列有重复项?必须定义要从中获取唯一值的列或具有重复项的列 正如您所提到的,列OrderID对于每一行都是唯一的。
"SELECT DISTINCT (OrderId)AS[OrderId], * from tableName"
你的问题很模糊。您希望从具有重复项的表中获取唯一行。哪一列有重复项?必须定义要从中获取唯一值的列或具有重复项的列 正如您所提到的,列OrderID对于每一行都是唯一的。您正在从表中选择不同的唯一行,因此所有行都将返回
您需要做的是将SQL修改为“从TableName中选择distinct Duplicate ColumnName以获得所需结果。SpM您的问题相当模糊。您希望从具有重复项的表中获取唯一行。哪一列有重复项?必须定义要从中获取唯一值的列或具有重复项的列 正如您所提到的,列OrderID对于每一行都是唯一的。您正在从表中选择不同的唯一行,因此所有行都将返回 您需要做的是将SQL修改为“从TableName中选择不同的DuplicateColumnName以获得所需的结果。” 按OrderId对行进行编号,并在RN=1的位置获取这些行
WITH un AS
(
SELECT OrderId, Field1, Field2, Field3,
ROW_NUMBER() OVER (PARTITION BY OrderId ORDER BY OrderId) AS RN
FROM TABLE
)
SELECT OrderId, Field1, Field2, Field3
FROM un
WHERE RN = 1
ORDER BY OrderId;
一种解决办法可以是:
按OrderId对行进行编号,并在RN=1的位置获取这些行
WITH un AS
(
SELECT OrderId, Field1, Field2, Field3,
ROW_NUMBER() OVER (PARTITION BY OrderId ORDER BY OrderId) AS RN
FROM TABLE
)
SELECT OrderId, Field1, Field2, Field3
FROM un
WHERE RN = 1
ORDER BY OrderId;
如果它返回所有行,这意味着每行都有一些不同。如果每行的
OrderId
是唯一的,那么您将获得所有行,因为OrderId
本身。显示一些示例数据和结果。选择count(*),OrderId从tableName组中按OrderId having count(OrderId)>1这将显示您是否有重复的订单id。如果它返回所有行,则意味着每行都有不同之处。如果OrderId
对于每行都是唯一的,则您将获得所有行,因为OrderId
本身。显示一些示例数据以及您想要的结果。选择count(*),表名组中的orderid,按orderid计数(orderid)>1这将显示您是否有重复的订单id。