del*_*ber 5 mysql sql primary-key
假设我想要更改表,以便我的主键如下
user_id, round, tournament_id
目前我需要清理重复项.查找所有重复项的查询是什么?
这是针对MySQL的,我希望看到重复的行
从技术上讲,您不需要这样的查询; 任何值得盐的RDBMS都不允许插入会在表中产生重复主键的行.这样的事情违反了主键的定义.
但是,如果您要在将主键应用于包含这些列的表之前编写查询以查找这些列组的重复项,那么这就是您想要的:
select
t.user_id, t.round, t.tournament_id
from
table as t
group by
t.user_id, t.round, t.tournament_id
having
count(*) > 1
Run Code Online (Sandbox Code Playgroud)
上面只会为您提供组合具有多行的列的组合,如果要查看行中的所有列,则执行以下操作:
select
o.*
from
table as o
inner join (
select
t.user_id, t.round, t.tournament_id
from
table as t
group by
t.user_id, t.round, t.tournament_id
having
count(*) > 1
) as t on
t.user_id = o.user_id and
t.round = o.round and
t.tournament_id = o.tournament_id
Run Code Online (Sandbox Code Playgroud)
请注意,如果需要多次使用结果,还可以创建临时表并加入.
| 归档时间: |
|
| 查看次数: |
13447 次 |
| 最近记录: |