thinkphp如何过滤名字重复的记录?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp如何过滤名字重复的记录?相关的知识,希望对你有一定的参考价值。

就好比是收款记录,我查出来有很多条记录,但是有很多都是同一个人的操作,我怎么只显示这个人的名字一次?总额统计出来(这个已经实现)。

example.对字段进行去重

$index = $select->distinct ( true )->where ( \'parent_id=0\' )->field ( \'index\' )->select ();

SELECT TOP 3
degree ,
COUNT(1) AS 人数
FROM
Student
GROUP BY
degree
ORDER BY
degree DESC
参考技术A

example.对字段进行去重

$index = $select->distinct ( true )->where ( 'parent_id=0' )->field ( 'index' )->select ();

参考技术B 数据库字段唯一约束吧

过滤掉多行中的mysql重复记录

【中文标题】过滤掉多行中的mysql重复记录【英文标题】:filter out mysql duplicate record in multiple rows 【发布时间】:2013-01-10 11:37:06 【问题描述】:

各位急需帮助!

我有一个 mysql 数据库,它有超过 158,000 条记录,其中有一些重复的数据。我想列出这些重复的数据 为了更清楚我到底在寻找什么:

mysql 表名是postal。列是 id、street、zipcode、locality 和 city

    id:1,邮政编码:123456,街道:street1,地点:locality1,城市:cityA

    id:2,邮政编码:123456,街道:street2,地点:locality1,城市:cityA

    id:3,邮政编码:123456,街道:street3,地点:locality1,城市:cityA

    id:4,邮政编码:123457,街道:street4,地点:locality1,城市:cityA

    id:5,邮政编码:123458,街道:street5,地点:locality1,城市:cityA

    id:6,邮政编码:166666,街道:street6,地区:locality26,城市:cityDE

    id:7,邮政编码:177777,街道:street7,地区:locality38,城市:cityEF

这些值是允许的!这是已输入 mysql db 表的数据的粗略草图:postal

相同 邮政编码(例如:id=1,2,3)会有不同的街道值,但只有一个地区名称 是允许的。此外,不同邮政编码(例如:id=3,4,5)可能有也可能没有不同的地区。请不要对此感到困惑。 我面临的问题是,我发现了一些这样的记录:

    id:11,邮政编码:111111,街道:street1,地点:locality1,城市:cityA

    id:25,邮政编码:111111,街道:street2,地点:locality2,城市:cityA

    id:56,邮政编码:111111,街道:street3,地点:locality3,城市:cityA

您会注意到 same zipcode(例如:id=11,25,56)具有完全不同的 locality 值,即不允许。同一邮政编码只允许使用一个位置值。

请建议我使用 sql 查询字符串来过滤掉包含不同位置值的邮政编码。请不要超过 150,000 条记录。

注意:我不是要求可以根据 pincode 对值进行排序的 sql 查询,我正在寻找一种方法来查找具有不同 locality 值的 zipcode

【问题讨论】:

冷静下来。那些感叹号让我很紧张。 150,000 条记录对于数据库来说并没有那么大。 【参考方案1】:

试试这个:

SELECT 
    postal.*
FROM 
    postal 
GROUP BY 
    zipcode
HAVING
    COUNT(DISTINCT(locality)) > 1

【讨论】:

我不是要求可以根据 pincode 对值进行排序的 sql 查询,我正在寻找一种方法来查找包含不同位置值的邮政编码 bhai,这只是给我一个结果,它也显示具有相同邮政编码的地区。我需要一个显示不同代码的地区的列表【参考方案2】:
SELECT id,locality,zipcode,locality,city
FROM postal t1
WHERE EXISTS (

SELECT id,locality,zipcode,locality,city
FROM postal t2
WHERE t2.id <> t1.id
AND t2.zipcode = t1.zipcode
AND t2.locality != t1.locality
)
LIMIT 0,30

帮我解决了这个问题。!现在它的工作!

【讨论】:

以上是关于thinkphp如何过滤名字重复的记录?的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp 官方文件执行引入流程

thinkphp的记录用户行为的日志怎么实现?

(16.05.17)ThinkPHP框架开发的应用的标准执行流程

如何使用Git安装ThinkPHP5.1

PHP-系统流程

Thinkphp5.0第二篇