Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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 2012 删除SQL Server中的重复行_Sql Server 2012_Duplicates - Fatal编程技术网

Sql server 2012 删除SQL Server中的重复行

Sql server 2012 删除SQL Server中的重复行,sql-server-2012,duplicates,Sql Server 2012,Duplicates,我的表中有列和行,如下所示 col1 col2 col3 col4 ----------------------- A 1 100 AA B 2 200 BB B 1 100 AA A 2 200 BB col2、col3和col4有重复的行,但不在col1中。我想最后的结果是 col1 col2 col3 col4 ----------------------- A 1 100 A

我的表中有列和行,如下所示

col1  col2  col3  col4
-----------------------
A     1     100   AA
B     2     200   BB
B     1     100   AA
A     2     200   BB
col2、col3和col4有重复的行,但不在col1中。我想最后的结果是

col1  col2  col3  col4
-----------------------
A     1     100   AA
B     2     200   BB
col1  col2  col3  col4
-----------------------
A     1     100   AA
A     2     200   BB
JSP/14/06/2017/1810759183   SRK/14/06/2017/1265996087   JS_43345.43556  BB  20000   1
JSP/14/06/2017/800205939    SRK/14/06/2017/2089009939   JS_43345.43556  BB  20000   1
我尝试过这个查询,但不起作用

DELETE aliasName FROM 
(
    SELECT *, ROW_NUMBER() OVER (
      PARTITION BY col1,col2,col3,col4 ORDER BY col1
    ) AS rowNumber FROM Table) aliasName
WHERE rowNumber > 1
如果我用col1删除分区,结果是

col1  col2  col3  col4
-----------------------
A     1     100   AA
B     2     200   BB
col1  col2  col3  col4
-----------------------
A     1     100   AA
A     2     200   BB
JSP/14/06/2017/1810759183   SRK/14/06/2017/1265996087   JS_43345.43556  BB  20000   1
JSP/14/06/2017/800205939    SRK/14/06/2017/2089009939   JS_43345.43556  BB  20000   1
这是我真正的表格结果

col1  col2  col3  col4
-----------------------
A     1     100   AA
B     2     200   BB
col1  col2  col3  col4
-----------------------
A     1     100   AA
A     2     200   BB
JSP/14/06/2017/1810759183   SRK/14/06/2017/1265996087   JS_43345.43556  BB  20000   1
JSP/14/06/2017/800205939    SRK/14/06/2017/2089009939   JS_43345.43556  BB  20000   1
试试这个

DELETE aliasName FROM 
(
    SELECT *, ROW_NUMBER() OVER (
       ORDER BY col1
    ) AS rowNumber FROM inp) aliasName
WHERE rowNumber%2 = 0
试试这个

DELETE aliasName FROM 
(
    SELECT *, ROW_NUMBER() OVER (
       ORDER BY col1
    ) AS rowNumber FROM inp) aliasName
WHERE rowNumber%2 = 0


如何知道col1中要保留哪个值?在您的示例数据中,为什么要保留第一行和第二行而不是第三行和第四行?这些数据是通过在我的程序中循环生成的,在发送到数据库之前有3次循环,但没有回答我的问题。您问题中的所有4行数据都是唯一的,这意味着您正在积极排除第3行和第4行数据,而没有解释原因。用什么标准来选择前两行而不是后两行?是的,先生,我有我更多的列是唯一的,我不包括在这里。总计列是第5列。我只需要col1的行来保持col2、col3和col4在一起,但col1中并没有重复项。我希望你能理解我说的话,你的要求毫无意义。无论您刚才提到的第5列是什么,问题中的所有4行都是唯一的。您如何知道col1中要保留哪个值?在您的示例数据中,为什么要保留第一行和第二行而不是第三行和第四行?这些数据是通过在我的程序中循环生成的,在发送到数据库之前有3次循环,但没有回答我的问题。您问题中的所有4行数据都是唯一的,这意味着您正在积极排除第3行和第4行数据,而没有解释原因。用什么标准来选择前两行而不是后两行?是的,先生,我有我更多的列是唯一的,我不包括在这里。总计列是第5列。我只需要col1的行来保持col2、col3和col4在一起,但col1中并没有重复项。我希望你能理解我说的话,你的要求毫无意义。无论您刚才提到的第5列是什么,您问题中的所有4行都是唯一的。谢谢您的查询,顺便说一句,仍然不起作用。。col1在该查询中没有重复项,但col2、col3和col4有重复项Delete aliasName FROM SELECT*,ROW_NUMBER OVER partition by col1 order by col1 AS rowNumber FROM inp aliasName WHERE rowNumber>1您现在的结果是什么?SELECT*,按col1分区的行数按col1排序按col1作为表中的行数能否显示此查询的输出等待先生,继续进行查询,顺便说一句,仍然不工作。。col1在该查询中没有重复项,但col2、col3和col4有重复项Delete aliasName FROM SELECT*,ROW_NUMBER OVER partition by col1 order by col1 AS rowNumber FROM inp aliasName WHERE rowNumber>1您现在的结果是什么?SELECT*,按col1分区的行数按col1排序按col1作为表中的行数能否显示此查询的输出wait sir,正在进行