mysql查询语句中distinct的问题

 2022-10-27    429  

mysql查询语句我们都经常在用,今天维护数据库出现以下需求,mysql查询语句查出user表中不重复的记录,使用distinct但他只能对一个字段有效,我试了好多次不行,怎么办呢?

原因就是 distinct它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。 也就是distinct只能返回它的目标字段,而无法返回其它字段 例如:

mysql查询语句中distinct的问题

SELECTDISTINCTmac,ipfromip 
+------+------+ 
|mac|ip| 
+------+------+ 
|abc|678| 
|abc|123| 
|def|456| 
|abc|12| 
+------+------+ 

他还是不会有变换!因为上面的语句产生的作用就是作用了两个字段,也就是必须得mac与ip都相同的才会被排除

***没有办法,使用group by 看看!!!! 查看mysql 手册!connt(distinct name) 可以配合group by 实现。 一个count函数实现我要的功能。

select*,count(distinctmac)fromipgroupbymac; 
+------+------+---------------------+ 
|mac|ip|count(distinctmac)| 
+------+------+---------------------+ 
|abc|678|1| 
|def|456|1| 
+------+------+---------------------+ 

基本实现我的想法!

那如何实现一个表有两个字段mac和ip,如何找出所有的mac相同而ip不同的记录?

mysql>select*fromip; 
+-----+-----+ 
|mac|ip| 
+-----+-----+ 
|abc|123| 
|def|456| 
|ghi|245| 
|abc|678| 
|def|864| 
|abc|123| 
|ghi|245| 
+-----+-----+ 
7rowsinset(0.00sec) 

mysql>SELECTDISTINCTa.mac,a.ip 
->FROMipa,ipb 
->WHEREa.mac=b.macANDa.ip<>b.ipORDERBYa.mac; 
+-----+-----+ 
|mac|ip| 
+-----+-----+ 
|abc|678| 
|abc|123| 
|def|864| 
|def|456| 
+-----+-----+ 
4rowsinset(0.00sec) 

  •  标签:  
  • MySQL
  •  

原文链接:https://77isp.com/post/4286.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。