PHP-mySQL如果行中有两个值,则选择duplicates并删除其中一个
假设你有一张这样的桌子PHP-mySQL如果行中有两个值,则选择duplicates并删除其中一个,php,mysql,sql,Php,Mysql,Sql,假设你有一张这样的桌子 users_cities_relations |--id--|name|c-id| |----------------| | 1 |Tom | 2 | | 2 |Mike| 3 | | 3 |Eve | 2 | | 4 |Tom | 2 | 如您所见,用户Tom使用相同的c-id存在2次 现在我要做的是删除其中一行 我在想这样的事情: SELECT id FROM users u1, users u2 WHERE u1.name = u
users_cities_relations
|--id--|name|c-id|
|----------------|
| 1 |Tom | 2 |
| 2 |Mike| 3 |
| 3 |Eve | 2 |
| 4 |Tom | 2 |
如您所见,用户Tom使用相同的c-id存在2次
现在我要做的是删除其中一行
我在想这样的事情:
SELECT id FROM users u1, users u2
WHERE u1.name = u2.name
AND u1.c-id = u2.c-id;
然后用不同的语句删除它
很遗憾,这并没有返回我所需要的,如果我没记错的话,它返回了所有的id。试试这种方法
Delete u from users_c u , (
select max(id) as id, name, c_id
from users_c
group by name, c_id
having count(id) > 1) as temp
where u.id = temp.id and u.name = temp.name and u.c_id = temp.c_id;
或ith temp表格以删除重复记录
CREATE TEMPORARY TABLE temp_users(
id int,
name varchar(40),
c_id int
);
insert into temp_users
select max(id), name, c_id
from users_c
group by name, c_id
having count(id) > 1;
select * from users_c;
select * from temp_users;
delete u from users_c u, temp_users temp
where u.id = temp.id and u.name = temp.name and u.c_id = temp.c_id;
drop temporary table temp_users;
可能重复这是不重复的,所有其他帖子检查一个相同的值,这是检查两个相同的值。那么?基本概念保持不变。查找重复项,删除除一个之外的所有重复项。仅仅因为你有两个需要检查的值,并不能神奇地使它有任何不同。如果你这样开始,你可以去标记所有的帖子,尽可能地重复没有,但它确实可以归结为大量的问题,假装它们因为小细节而不同。如果这是一个烹饪网站,我们是否应该有两种不同的圣诞饼干食谱,因为一种是红色的食用色素,另一种是红色的?