我想知道是否有办法从表中删除重复值。键'distinct'将获取唯一的行,但是如果列中的一个值不同,则不会。所以只是想知道这是否可以通过任何方式实现。希望以下示例有所帮助。
例如:在下表中,Emp_ID 1234有两个条目,具有两个不同的优先级。我的输出应该单独考虑优先级较高的行。可能吗?
My table
+---------+------+--------+-------+
| Employee_ID| priority | gender |
+------------+-----------+--------+
| 1234 | 1 | F |
| 1234 | 10 | F |
| 5678 | 2 | M |
| 5678 | 25 | M |
| 9101 | 45 | F |
+------------+-----------+--------+
输出
+---------+------+--------+-------+
| Employee_ID| priority | gender |
+------------+-----------+--------+
| 1234 | 1 | F |
| 5678 | 2 | M |
| 9101 | 45 | F |
+------------+-----------+--------+
答案 0 :(得分:2)
DELETE
FROM Table t
WHERE EXISTS ( SELECT Employee_ID FROM Table WHERE Employee_ID = t.Employee_ID AND priority < t.Priority)
如果您真的想要从表中删除它们。 Exists部分也可以在select查询中使用,以将值保留在Original表中。
SELECT *
FROM Table t
WHERE NOT EXISTS (SELECT Employee_ID FROM Table WHERE Employee_ID = t.Employee_ID AND priority > t.Priority)
答案 1 :(得分:0)
select Employee_ID,max(priority) as priority,gender
from table
group by Employee_ID,gender