在mysql中从重复记录中筛选出单个记录

t8e9dugd  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(352)

我想过滤重复项并从这些重复项中获取单个记录。(电话号码列仅重复,其他不重复)

  1. For eg:
  2. row_count state phone areacode zip
  3. 1 a 123 989 321
  4. 2 z 123 981 322
  5. 3 x 123 982 323
  6. 4 d 321 983 324
  7. 5 a 321 984 325
  8. 6 b 098 985 326
  9. 7 c 098 986 327

我想要这样的订单:

  1. row_count state phone areacode zip
  2. 1 a 123 989 321
  3. 4 d 321 983 324
  4. 6 b 098 985 326
rseugnpd

rseugnpd1#

一种方法连接到一个子查询,该子查询过滤掉除具有最小值的电话号码以外的所有记录 row_count :

  1. SELECT t1.*
  2. FROM yourTable t1
  3. INNER JOIN
  4. (
  5. SELECT phone, MIN(row_count) AS min_row_count
  6. FROM yourTable
  7. GROUP BY phone
  8. ) t2
  9. ON t1.phone = t2.phone AND t1.row_count = t2.min_row_count;

以下是mysql 8+使用分析函数实现的方法:

  1. SELECT row_count, state, phone, areacode, zip
  2. FROM
  3. (
  4. SELECT *, MIN(row_count) OVER (PARTITION BY phone) min_row_count
  5. FROM yourTable
  6. ) t
  7. WHERE row_count = min_row_count;
展开查看全部
kadbb459

kadbb4592#

使用相关子查询

  1. select * from table1 t1 where row_count =
  2. (select min(row_count)
  3. from table1 t2
  4. where t1.phone=t2.phone
  5. )

相关问题