MySql 去重且指定某字段在前的排序方法
今天遇到一个棘手的数据查找并去重的问题:
情况:
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 去重且指定某字段在前的排序方法的更多相关文章
- mysql命令语句来去除掉字段中空格字符的方法
mysql有什么办法批量去掉某个字段字符中的空格?不仅是字符串前后的空格,还包含字符串中间的空格,答案是 replace,使用mysql自带的 replace 函数,另外还有个 trim 函数. ...
- Mysql中让两个字段不同时相同的方法
有时候我们会遇到这样的一种情况:有一些不同的专业,每个专业中有一些不同的学号,专业+学号能对应到个人.这时,应该如何在数据库中定义列,来保证专业+学号对应的学生的唯一性呢? 把学号定义成唯一(UNIQ ...
- mysql中整数类型后面的数字,是不是指定这个字段的长度?比如int(11),11代表11个字节吗?
原文地址: http://www.cnblogs.com/stringzero/p/5707467.html 原先对mysql不太理解,但也没有报错.但理解的不够深入.这次补上. 原来以为int ...
- replace() MySQL批量替换指定字段字符串
mysql replace实例说明: UPDATE tb1 SET f1=REPLACE(f1, 'abc', 'def'); REPLACE(str,from_str,to_str) 在字符串 st ...
- mysql函数之七:replace() MySQL批量替换指定字段字符串
mysql replace实例说明: UPDATE tb1 SET f1=REPLACE(f1, 'abc', 'def'); REPLACE(str,from_str,to_str) 在字符串 st ...
- MySQL中TEXT与BLOB字段类型的区别
这篇文章主要介绍了MySQL中TEXT与BLOB字段类型的区别,本文总结了6大区别,需要的朋友可以参考下 在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程 ...
- mysql数据库user表host字段的%问题
搜索: mysql数据库user表host字段的%问题 连接:http://blog.csdn.net/xiaomengh/article/details/48706149 在mysql数据库中,使用 ...
- mysql向表中某字段后追加一段字符串:
mysql向表中某字段后追加一段字符串:update table_name set field=CONCAT(field,'',str) mysql 向表中某字段前加字符串update table_n ...
- MySQL中int类型的字段使用like查询方法
方法参考自: http://stackoverflow.com/questions/8422455/performing-a-like-comparison-on-an-int-field 也就是使用 ...
随机推荐
- 为什么你要拒绝我 ——苹果AppStore被拒理由大全
简而言之 截图中出现了Android 截图中出现了hack苹果的内容 评论中出现了"屌丝"等不雅词汇 App中包含谈论Android系统的内容 你修改了状态栏,不行 只有第三方登录 ...
- 收集 关于php的博文
1. 小狼的世界: 浅谈用php实现mvc:http://www.cnblogs.com/cocowool/archive/2009/09/08/1562874.html 关于MVC的定义和解释,可以 ...
- 如何在plSql查询数据查出的数据可编辑
最近开发项目时要经常自己造数据,遇到好多查询出数据时要进行修改.上网查询资料 总结如下: plSql允许查询数据可以编辑的条件是必须查询出rowid 在某个表上点击query data 出现的sql语 ...
- [转]application windows are expected to have a root view controller错误
转载地址:http://blog.sina.com.cn/s/blog_6784e6ea01017jfy.html 最新更正:这个提示几乎不影响编译和运行,可以不用设置. 产生这个提示的操作: ...
- VI 命令简介
1.打开一个文件 vi 文件路径 2.命令模式转换 输入模式 i 命令模式 esc 3.复制 和 粘贴 1)将光标移动到将要复制的行处,按yy进行复制当前行(按nyy复制n行),再移动到粘贴位 ...
- js 精确小数俩位
function toDecimal2(x) { var f = parseFloat(x); if ...
- WCF自定义地址路由映射(不用svc文件)
一般在创建WCF服务时会用Serivce.svc文件访问,地址如:http://localhost/applicationname/Serivce.svc/Name 现在用路由映射成:http://l ...
- Black Box 分类: POJ 栈和队列 2015-08-05 14:07 2人阅读 评论(0) 收藏
Black Box Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8754 Accepted: 3599 Description ...
- 【20160924】GOCVHelper 图像增强部分(4)
//使得rect区域半透明 Mat translucence(Mat src,Rect rect,int idepth){ Mat dst = src.clone(); ...
- GOICE项目初探
GOICE项目初探 在图像拼接方面,市面上能够找到的软件中,要数MS的ICE效果.鲁棒性最好,而且界面也很美观.应该说有很多值得学习的地方,虽然这个项目不开源,但是利用现有的资料,也可 ...