Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Sql Server 2008表中选择唯一的行_Sql_Sql Server 2008 - Fatal编程技术网

从Sql Server 2008表中选择唯一的行

从Sql Server 2008表中选择唯一的行,sql,sql-server-2008,Sql,Sql Server 2008,我试图从具有重复项的sql表中选择唯一的行。我有一个列OrderId,这对于每一行都应该是唯一的。因此,我尝试选择具有唯一orderId的所有列(30)。我尝试了这个查询,但它返回了所有行。groupBy也一样 "SELECT DISTINCT (OrderId)AS[OrderId], * from tableName" 你的问题很模糊。您希望从具有重复项的表中获取唯一行。哪一列有重复项?必须定义要从中获取唯一值的列或具有重复项的列 正如您所提到的,列OrderID对于每一行都是唯一的。

我试图从具有重复项的sql表中选择唯一的行。我有一个列OrderId,这对于每一行都应该是唯一的。因此,我尝试选择具有唯一orderId的所有列(30)。我尝试了这个查询,但它返回了所有行。groupBy也一样

 "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。