我有一个sql表,用于保存位置,
ID Name X Y Z
-------------------------
1 Loc1 12 24 45
2 Loc2 12 24 60
3 Loc3 54 32 33
4 Loc4 54 32 64
5 Loc5 98 66 90
6 Loc6 98 66 77
7 Loc7 44 50 98
某些位置坐标(x和y)错误重复
我想选择并删除其中一个。
ID Name X Y Z
-------------------------
1 Loc1 12 24 45
2 Loc3 54 32 33
3 Loc5 98 66 90
4 Loc7 44 50 98
这可以用sql查询吗?
答案 0 :(得分:1)
我认为您可以使用alter-table命令并删除整个列。
ALTER TABLE table_name
DROP COLUMN column_name
答案 1 :(得分:1)
with cte
as
(
select *,row_number() over (partition by x,y order by x) as rn
)
delete from cte where rn>1
正如在评论中指出的那样,这会删除一个随机行(不确定性),以便在您的案例中按名称确定其顺序
答案 2 :(得分:0)
对于MySQL,您可以使用:
DELETE mytable
FROM mytable
JOIN (SELECT MIN(ID) AS ID, X, Y
FROM mytable
GROUP BY X, Y
) AS t ON mytable.X = t.X AND mytable.Y = t.Y AND mytable.ID > t.ID
答案 3 :(得分:0)
很容易:
使用IGNORE在2列上添加INDEX:
ALTER IGNORE TABLE YOUR_TABLE
ADD KEY (X,Y);
多数人