【问题标题】:(my)SQL delete duplicate DB-entries WHERE ... [duplicate](mySQL 删除重复的 DB 条目 WHERE ... [重复]
【发布时间】:2014-08-17 12:55:18
【问题描述】:

嗨,我有一个这样的数据库

DB-name: plzahl
Sample Data:

code   |   plz
------------------
1          8000
1          8000
2          8000
3          8000
2          8001
3          8001
...

我想要的是删除所有重复项,以在表中保留具有最高“代码”列值的那个。

我在数据库中还没有唯一标识符。添加一个比使用 mysql_fetch_array() 并构建一个“删除数组”更好吗?或者你会使用 foreach 来获取任何“plz”,如果 count > 0 并且如果,获取它们,对它们进行排序并删除 count- 1个?

到目前为止:

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("no connection: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT code, plz FROM plzahl");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    //... here goes the magic
    // make query to search for count $row['plz'] > 0 ?
    ....
}

mysql_free_result($result);
?>

感谢任何代码提示!

【问题讨论】:

    标签: php mysql sql duplicates


    【解决方案1】:

    用mysql的方式做:

    mysql_query('CREATE TABLE plz_new LIKE plz');
    mysql_query('INSERT INTO plz (SELECT MAX(code) AS code, plz FROM plzahl GROUP BY plz)');
    mysql_query('DROP TABLE plz');
    mysql_query('RENAME TABLE plz_new plz');
    

    【讨论】:

      猜你喜欢
      • 2021-01-22
      • 2014-08-01
      • 2012-04-10
      • 2016-10-06
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 2021-07-26
      • 2012-03-11
      相关资源
      最近更新 更多