我有一张表中有重复数据的表,我想选择重复数据并使用所有重复数据的第一个数据ID
Table1
id | name | Number |
001 | amanda | 457 |
002 | amanda | 457 |
003 | jose | 458 |
004 | jose | 458 |
005 | past | 459 |
006 | past | 459 |
Now I want the duplicate to have the same `id` for all the duplicated data
What I expect
Table2
id | name | Number |
001 | amanda | 457 |
001 | amanda | 457 |
003 | jose | 458 |
003 | jose | 458 |
005 | past | 459 |
005 | past | 459 |
我想要一个可以进行此分组的查询;这是我尝试过的:
$query ="SELECT
id,
name,
number
FROM
`Table` ";
$result=$db->query($query);
while($row=mysqli_fetch_assoc($result)){
$id=$row['iD'];
$number=$row['number'];
$ss="UPDATE `Table` SET `id`='$id' WHERE `id` =$id";
$e=$db->query($ss);
}
我知道这是错的。如果有人能帮助我做对,我将不胜感激。感谢。
答案 0 :(得分:0)
您需要按照以下方法解决问题。
1.你需要获得第一个身份和年长的身份 2.使用第一个ID更新旧版本。
我更新了您的查询以获取第一个和更早的ID。
$query ="SELECT
DT2.id as olderID,
DT1.id as newID,
DT1.name,
DT1.Number
FROM
duplicate_table DT1
LEFT JOIN (
SELECT
id,
name,
Number
FROM
duplicate_table
GROUP BY
name,
id
ORDER BY
name,
id ASC
) DT2 ON ( DT2.name=DT1.name)
WHERE
DT1.id > DT2.id
GROUP BY
DT1.name,
DT1.id
ORDER BY
DT1.name,
DT1.id DESC ";
$result=$db->query($query);
while($row=mysqli_fetch_assoc($result)){
$olderID=$row['olderID'];
$newID=$row['newID'];
$id=$row['iD'];
$number=$row['number'];
$ss="UPDATE `Table` SET `id`='$olderID' WHERE `id` =$newID";
$e=$db->query($ss);
}