【发布时间】:2015-10-02 22:51:35
【问题描述】:
我有以下两列的表格:
表格:vv
CREATE TABLE vv
(
cola INT,
colb INT
);
插入:
INSERT INTO vv VALUES (1,2),(2,1),(3,4),(4,3);
我的记录:
SELECT * FROM vv;
Cola Colb
------------
1 2
2 1
3 4
4 3
注意:现在我想从表中删除反之亦然的记录。就像在我的桌子上一样
记录1,2 和2,1,我只想保留唯一的一个值,无论哪个首先出现在
表。
预期结果应该是:
如果我在 SELECT 语句中按1 排序:
SELECT * FROM vv
ORDER BY CASE WHEN Cola = '1' THEN 1 ELSE 2 END;
结果应该是:
Cola Colb
-------------
1 2
3 4
如果我在 SELECT 语句中按4 排序:
SELECT * FROM vv
ORDER BY CASE WHEN Cola = '4' THEN 1 ELSE 2 END;
结果应该是:
Cola Colb
-------------
4 3
1 2
如果我在 SELECT 语句中按3 排序:
SELECT * FROM vv
ORDER BY CASE WHEN Cola = '3' THEN 1 ELSE 2 END;
结果应该是:
Cola Colb
-------------
3 4
1 2
【问题讨论】:
-
您的预期输出部分有什么要求?
-
@Dark Knight,我只想为此编写选择语句。
-
先出现是什么意思?你怎么知道哪个是第一个?
-
如果您想成对删除重复项,sqlfiddle.com/#!3/c8fa3/2
-
@FelixPamittan,我将通过将值传递给 order by 来了解它,正如您在预期的输出部分中所做的那样。
标签: sql-server sql-server-2008-r2