从mysql获取数据并替换重复项

时间:2018-06-28 09:48:08

标签: php 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

FIDDLE LINK:http://sqlfiddle.com/#!9/e94620/2

OR

我可以使用PHP完成此操作

2 个答案:

答案 0 :(得分:2)

所以...

我对此进行了研究,在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

答案 1 :(得分:0)

或使用SQL查询:

dataframe = pandas.read_csv("<csv_name>", index_col=0, parse_dates=True)

Sqlfiddle here