首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL如何查询客户,名字与姓氏匹配时跳过

问MySQL如何查询客户,名字与姓氏匹配时跳过
EN

Stack Overflow用户
提问于 2016-08-06 07:16:15
回答 1查看 31关注 0票数 0

MySQL

想象一下一家预付卡发行公司。

用户可以多次注册。

一个用户可以拥有多张卡。

代码语言:javascript
复制
CREATE TABLE users ( 
  id int primary key,
  govid varchar(255),
  firstname varchar(255),
  lastname varchar(255),
  address varchar(255)
);

CREATE TABLE card (
  id int primary key,
  cardnumber varchar(16), 
  balance int, 
  user_id integer
);

我想要一个用户列表

  1. 具有相同的govid
  2. 只有在名字和姓氏不匹配的情况下才能拥有超过10张

我的尝试是:

代码语言:javascript
复制
select u.govid, count(*)
from card c
join users u on u.id=c.user_id
/*join users u2 on u2.id=u.id and u2.firstname<>u.firstname and u2.lastname<>u.lastname ?*/
group by u.govid
having count(*)>10

我想不出该怎么填第三条要求?

EN

回答 1

Stack Overflow用户

发布于 2016-08-06 07:24:21

与拥有10张以上卡片的用户一起加入原表,并检查名字和姓氏条件。

代码语言:javascript
复制
select u1.govid,u1.firstname,u1.lastname,u2.firstname,u2.lastname
from users u1 
join (select * from users
      where govid in (select u.govid
                      from users u
                      join card c on u.id=c.user_id
                      group by u.govid
                      having count(*)>10
                     ) 
      ) u2 on u1.govid = u2.govid
where u2.firstname<>u1.firstname and u2.lastname<>u1.lastname
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38798945

复制
相关文章

相似问题

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