首页 > 解决方案 > 从 mysql 获取数据并替换重复条目

问题描述

我有一个test包含列id(primary key)和的表名t1(varchar)t1包含具有多个重复条目的电子邮件 ID。所以我想选择所有数据并将重复的条目替换为空白行,例如:

桌子看起来像

 id   |   t1
  1   |    a@gmail.com
  2   |    b@gmail.com
  3   |    c@gmail.com
  4   |    a@gmail.com
  5   |    e@gmail.com
  6   |    c@gmail.com

我想要的结果

 id   |   t1
  1   |    a@gmail.com
  2   |    b@gmail.com
  3   |    c@gmail.com
  4   |    DUPLICATE
  5   |    e@gmail.com
  6   |    DUPLICATE

小提琴链接: http ://sqlfiddle.com/#!9/e94620/2

或者

我能用 PHP 完成这个吗

标签: phpmysql

解决方案


所以...

我对此进行了研究,并且在 PHP 中要容易得多,例如,我有以下脚本;

<table>
    <tr>
        <th>ID</th>
        <th>Email</th>
    </tr>

<?php

$data = [ // This will be your info from DB
    1 => 'a@gmail.com',
    2 => 'b@gmail.com',
    3 => 'c@gmail.com',
    4 => 'a@gmail.com',
    5 => 'e@gmail.com',
    6 => 'c@gmail.com'
];

$used_emails = [];

foreach ($data as $key => $part)
{
    print "<tr><td>" . $key . "</td><td>";
    if (!in_array($part, $used_emails))
    {
        print $part;
        $used_emails[] = $part;
    }
    else
    {
        print "duplicate";
    }
    print "<td></tr>";
}

?>

</table>

这导致;

ID  Email
1   a@gmail.com 
2   b@gmail.com 
3   c@gmail.com 
4   duplicate   
5   e@gmail.com 
6   duplicate   

这会得到结果,并且对于每个,检查它们是否已被使用,如果没有,则显示并说它已被使用,否则,打印“重复”

这是我的工作示例;https://tehplayground.com/BKTIXja1usyRxYM3


推荐阅读