首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql GROUP BY with条件

Mysql GROUP BY with条件
EN

Stack Overflow用户
提问于 2014-04-11 16:25:06
回答 1查看 291关注 0票数 0

我有一个包含这些列(indx、data_lname、data_fname、data_mname、data_dob、data_mobile)的表,我想要分隔唯一和重复的列。

这是我的代码:

代码语言:javascript
复制
SELECT data_lname, data_fname, data_mname, data_dob, data_mobile
    FROM tbl_data
    GROUP BY data_lname, data_fname, data_mname, data_dob, data_mobile
    HAVING COUNT(indx) = 1
    ORDER BY indx;

SELECT data_lname, data_fname, data_mname, data_dob, data_mobile
    FROM tbl_data
    GROUP BY data_lname, data_fname, data_mname, data_dob, data_mobile
    HAVING COUNT(indx) > 1
    ORDER BY indx;

问题是,要标记为重复的记录有两个标准,第一个标准是,无论手机是什么,它都必须具有相同的名称和相同的道布。第二个标准就是同名同机,不管这个道布是什么。

我该如何构造一个查询呢?提亚

EN

回答 1

Stack Overflow用户

发布于 2014-04-11 16:43:39

您可以使用JOIN来实现这一点。

代码语言:javascript
复制
SELECT
  data.id,
  COUNT(duplicates.id) AS duplicates
FROM tbl_data AS data
LEFT JOIN tbl_data AS duplicates
  ON duplicates.data_lname = data.data_lname
  AND duplicates.data_fname = data.data_fname
  AND duplicates.data_mname = data.data_mname
  AND (duplicates.data_dob = data.data_dob OR duplicates.data_mobile = data.data_mobile)
  AND data.id != duplicates.id
GROUP BY data.id
HAVING duplicates > 0 #duplicates
HAVING duplicates = 0 #uniques

使用diffent HAVING子句获取所需的条目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23007309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档