首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql where OR having

mysql where OR having
EN

Stack Overflow用户
提问于 2011-04-26 23:37:54
回答 2查看 2.1K关注 0票数 2

我有一个用户表,其中一些用户有关联的文章,还有一些用户的type = writer。我想显示所有拥有文章或type = writer的用户。因此,应该显示所有作者,而其他用户类型只有在他们有文章时才会显示。

到目前为止,这就是我的查询,它省略了没有文章的作者。

代码语言:javascript
复制
SELECT u.name, u.type, COUNT(a.id) count
FROM users u
LEFT JOIN articles a on u.id = a.writer_id
GROUP BY u.name
HAVING count > 0

添加以下WHERE子句显然会排除具有项目的其他用户类型。

代码语言:javascript
复制
WHERE u.type = 'writer'

我需要对这两个结果集进行联合吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-26 23:42:00

我想你是在找这样的东西

代码语言:javascript
复制
SELECT 
  u.name, 
  u.type, 
  COUNT(a.id) count
FROM users u
LEFT JOIN articles a ON u.id = a.writer_id
WHERE 
  u.type='writer' --all users that are writers
  OR 
  a.writer_id IS NOT NULL  --all users that have at least one article
GROUP BY 
  u.name
--removed the having clause as it seems it may be possible that a writer has no articles.
票数 4
EN

Stack Overflow用户

发布于 2011-04-26 23:43:01

只需更改WHERE子句,以允许具有匹配文章记录的任何用户:

代码语言:javascript
复制
SELECT u.name, u.type, COUNT(a.id) count
FROM users u
LEFT JOIN articles a on u.id = a.writer_id
WHERE u.type = 'writer' OR a.writer_id IS NOT NULL
GROUP BY u.name
HAVING count > 0
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5792764

复制
相关文章

相似问题

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