今天遇到一个棘手的数据查找并去重的问题:

  情况:

  1.取出数据库中的数据;

  2.同一字段A,不同情况<值,如A值为:a1,a2>下取出的其他数据可能相同;

  3.将2情况下的重复数据<除A字段外,其他字段的数据相同>删除,且留下指定A值<如:a1>的一条数据;

  4.将A<a1>存在的记录排序到最前,之后去重,保持A<a1>的数据留下,用来标记和非A<a1>值记录对比,且做不同的展示;

  难点:

  * 去重;

  * 保留下指定A<a1>的数据;

  解决方案:

  1.按指定字段排序:

SELECT
tsf.supplier_id,
tsf.company_id,
tsf.record_id,
tsf.supplier_cpyname,
tsf.file_status,
tsf.create_dt,
tsf.no_check,
tsf.is_auth_updated,
soi.company_id owner_id,
taci.corporation,
taci.m_phone,
taci.contact_addr
FROM
t_supplier_files tsf
left join t_supplier_owner_info as soi on soi.supplier_id = tsf.supplier_id
left join t_app_company_info as taci on taci.company_id = tsf.company_id
left join t_supplier_regaccount_info tsri on tsri.supplier_id = tsf.supplier_id
WHERE
tsri.reg_id = 12
ORDER BY FIELD(owner_id,10000) DESC

  

  此Sql中的:

    owner_id 为 A

    10000 为 a1

  上述代码可以将所有的owner_id为10000的排序到最前面:FIELD() 链接

  Mysql查询按照某字段指定顺序排序的两个方法,FIELD和substring_index。链接

  例:

  SELECT * FROM documents WHERE id IN (5,3,6,1) ORDER BY FIELD(id,5,3,6,1);

  2.去重,保留指定字段数据<将owner_id为10000的数据保留下来,且去掉owner_id为其他值的重复数据去掉>

SELECT *
FROM
(
SELECT
tsf.supplier_id,
tsf.company_id,
tsf.record_id,
tsf.supplier_cpyname,
tsf.file_status,
tsf.create_dt,
tsf.no_check,
tsf.is_auth_updated,
soi.company_id owner_id,
taci.corporation,
taci.m_phone,
taci.contact_addr
FROM
t_supplier_files tsf
left join t_supplier_owner_info as soi on soi.supplier_id = tsf.supplier_id
left join t_app_company_info as taci on taci.company_id = tsf.company_id
left join t_supplier_regaccount_info tsri on tsri.supplier_id = tsf.supplier_id
WHERE
tsri.reg_id = 12
ORDER BY FIELD(owner_id,10000) DESC
) as newTable
GROUP BY newTable.supplier_id

  通过 GROUP BY 重复数据中的唯一字段,将重复的数据去除掉;

  结论:

    将owner_id为10000的数据保留下来,即保留下来用来优先显示的数据条,且将重复的数据去除掉;这样可以保留区别字段,且有效的将重复字段去除掉;

  

  

  

MySql 去重且指定某字段在前的排序方法的更多相关文章

  1. mysql命令语句来去除掉字段中空格字符的方法

    mysql有什么办法批量去掉某个字段字符中的空格?不仅是字符串前后的空格,还包含字符串中间的空格,答案是 replace,使用mysql自带的 replace 函数,另外还有个 trim 函数.   ...

  2. Mysql中让两个字段不同时相同的方法

    有时候我们会遇到这样的一种情况:有一些不同的专业,每个专业中有一些不同的学号,专业+学号能对应到个人.这时,应该如何在数据库中定义列,来保证专业+学号对应的学生的唯一性呢? 把学号定义成唯一(UNIQ ...

  3. mysql中整数类型后面的数字,是不是指定这个字段的长度?比如int(11),11代表11个字节吗?

    原文地址:    http://www.cnblogs.com/stringzero/p/5707467.html 原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int ...

  4. replace() MySQL批量替换指定字段字符串

    mysql replace实例说明: UPDATE tb1 SET f1=REPLACE(f1, 'abc', 'def'); REPLACE(str,from_str,to_str) 在字符串 st ...

  5. mysql函数之七:replace() MySQL批量替换指定字段字符串

    mysql replace实例说明: UPDATE tb1 SET f1=REPLACE(f1, 'abc', 'def'); REPLACE(str,from_str,to_str) 在字符串 st ...

  6. MySQL中TEXT与BLOB字段类型的区别

    这篇文章主要介绍了MySQL中TEXT与BLOB字段类型的区别,本文总结了6大区别,需要的朋友可以参考下   在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程 ...

  7. mysql数据库user表host字段的%问题

    搜索: mysql数据库user表host字段的%问题 连接:http://blog.csdn.net/xiaomengh/article/details/48706149 在mysql数据库中,使用 ...

  8. mysql向表中某字段后追加一段字符串:

    mysql向表中某字段后追加一段字符串:update table_name set field=CONCAT(field,'',str) mysql 向表中某字段前加字符串update table_n ...

  9. MySQL中int类型的字段使用like查询方法

    方法参考自: http://stackoverflow.com/questions/8422455/performing-a-like-comparison-on-an-int-field 也就是使用 ...

随机推荐

  1. 如何获取各大平台的播放地址(获得优酷的m3u8播放地址)为例

    1.打开safari 2.在顶部(黑色小苹果)旁边,点击safari. 3.打开里面的 偏好设置. 4.在高级 中 找到 “在菜单栏中显示开发菜单” 并打勾. 5.关闭窗口后,可以发现safari 顶 ...

  2. Android系统版本与API Level对照表

    Platform Version API Level VERSION_CODE Notes Android 4.2 17 JELLY_BEAN_MR1   Android 4.1, 4.1.1 16 ...

  3. 解析八大O2O典范:他们都做了什么?

    随着无线技术的发展二维码的发展以及智能手机的普及,零售的解决方案不仅在在一台电脑上解决,可以从线上到线下,为消费者贯通线上线下的购物体验.人人都爱O2O,可做得好的O2O案例却并不多.要解决利益分配. ...

  4. 加载 pcntl 多进程

    加载 pcntl 有两种方式 一种重新编译安装,在编译时加 --enable-pcntl ./configure --prefix=/usr/local/php --with-mysql=/usr/l ...

  5. ASP.NET数据验证控件的常用的属性

    一.非空验证     RequiredFieldValidator ControlToValidate 所验证的控件ID Text 出错时的提示的文本 ErrorMessage 提交给Validati ...

  6. oracle 树状查询

    做树状查询的时候,oracle有自己的优势,一条sql语句就可以搞定,而mysql这种数据库就只能用递归了... 递归的项目实例: //递归取到栏目路径 public List getTreeList ...

  7. 【转】MYSQL入门学习之五:MYSQL的字符集

    转载地址:http://www.2cto.com/database/201212/175541.html MySQL的字符集支持(Character Set Support)有两个方面:字符集(Cha ...

  8. Android Webview实现文件下载功能

        在做美图欣赏Android应用的时候,其中有涉及到Android应用下载的功能,这个应用本身其实也比较简单,就是通过WebView控制调用相应的WEB页面进行展示.刚开始以为和普通的文件下载实 ...

  9. Wireless Network

    Wireless Network Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 19626 Accepted: 8234 De ...

  10. Scrapy集成selenium+PhantomJS+代理IP 解析js动态内容

    转载于:http://blog.aizhet.com/web/16523.html