如何从MySql中删除重复用户但保存原始用户[重复]
Posted
技术标签:
【中文标题】如何从MySql中删除重复用户但保存原始用户[重复]【英文标题】:How to delete duplicate user from MySql but to save original one [duplicate] 【发布时间】:2016-07-21 00:21:05 【问题描述】:我有一张这样的桌子: 我想删除“Ognjen”和“Nikola”的所有重复值,只保存这两个值,而不保存它们的重复值。我试过这样:
public function findDuplicate($tabela)
$query = "SELECT `user_facebook_id` FROM $tabela GROUP BY `user_facebook_id` HAVING count(*) > 1";
$rez = $this->db->query($query, 3);
if($rez)
return $rez;
else
return false;
$duplicateResult=$settings->findDuplicate($tabela);
if($duplicateResult)
echo '<div class="alert alert-warning">
<strong>Warning!</strong> We can see that some of users you inserted already exists in database, so we are authorized to delete them.
</div>
';
foreach($duplicateResult as $result)
$to=$result['user_facebook_id'];
$mysqli1 = new mysqli('localhost','servis_user','QrbRJQK7r52nFpx2','servis_racunara');
$q="DELETE FROM $tabela WHERE `user_facebook_id`=$to";
$rez=$mysqli->query($q);
var_dump($rez);
但这所做的只是从我的表中删除所有内容。所以不再有“Ognjen”或“Nikola”了。请帮忙,我被这个卡住了。
【问题讨论】:
检查ID,最高的你删掉你保留的最低的。 查看我刚刚发布的答案 :) 还在检查中..会给你反馈,别担心:) 我还建议不要将 mysql 与 Web 界面一起使用。仅在本地运行以确保安全。我更喜欢debian linux附带的本机mysql。如果您对此感兴趣。 【参考方案1】:感谢 user187291; 参考:How to delete duplicates on a MySQL table?
“这将删除重复的地方,而不创建新表
ALTER IGNORE TABLE foobar ADD UNIQUE (title, SID)
注意:只有当索引适合内存时才能正常工作”
【讨论】:
也许您应该阅读过您借用的答案的一些附带条件***.com/questions/2630440/…【参考方案2】:这样的事情应该可以做到,让我知道它是否适合你
$result = mysqli_query($mysqli, "SELECT * from $tabela where user_facebook_id = '&to' and pol = '$pol' ");
$row_cnt = mysqli_num_rows($result);
if($row_cnt < 1)
// do nothing
else
mysqli_query($mysqli, "DELETE FROM $tabela WHERE user_facebook_id = '$to' DESC LIMIT 1");
解释这段代码: 它将搜索 user_facebook_id 和 pol ($pol 你需要自己定义,不确定你是否已经拥有)如果它找到多个,它将执行最后一个查询,该查询将删除它找到的最后一个结果。如果它没有找到超过 1 它什么也不做。
编辑:我对if($row_cnt < 1)
做了一个小改动,它必须是<
而不是>
【讨论】:
不,这不是我真正想要的。必须删除 DESC 部分(是语法错误),它所做的只是从数据库中删除一行。 顺便说一句,如果用户登录到他们网站的仪表板,我会使用此方法,因为我使用的是唯一会话而不是用户名。使登录更容易。但由于用户偶尔会注销,我不想让数据库充满会话。我检查用户之前是否使用相同的 IP 登录过。如果是这样的话。我从数据库中删除旧的。 尝试将其更改为DESC LIMIT 1
,大写字母。你知道有多少重复吗?
事实上,我所要做的就是让user_facebook_id
成为唯一的行。简单得可笑。无论如何,谢谢你的努力。 :)以上是关于如何从MySql中删除重复用户但保存原始用户[重复]的主要内容,如果未能解决你的问题,请参考以下文章