mysql - 基于关联数的 SQL 条件

标签 mysql sql associations conditional-statements

我正在尝试对我的用户数据库运行查询,但遇到了一些麻烦。我想获取相关行的数量并以此为基础。我会让我的场景解释:

用户可以在我的应用中拥有_很多视频。就我而言,我想返回所有没有视频的用户。还有一些其他条件,但这是我遇到麻烦的地方。理想情况下,我的查询类似于(kinda sudo-code):

SELECT count(*) FROM users 
JOIN videos ON users.id=videos.user_id
WHERE
  users.some_attribute = 1
  OR
  (users.last_login >= '03/18/2012' AND COUNT(videos) > 0)

感谢任何帮助。

谢谢!! - 杰夫

最佳答案

你可以在 SQL 中使用 Having 语句:

SELECT count(*) FROM users 
JOIN videos ON users.id=videos.user_id
WHERE  users.some_attribute = 1   OR   users.last_login >= '03/18/2012'
HAVING COUNT(videos.<some_column>) > 0)

添加编辑以响应以下评论:

SELECT count(*) FROM users 
WHERE  users.some_attribute = 1   
UNION 
SELECT count(*) FROM users 
JOIN videos ON users.id=videos.user_id
WHERE  users.last_login >= '03/18/2012'
HAVING COUNT(videos.<some_column>) > 0)

关于mysql - 基于关联数的 SQL 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15483348/

相关文章:

mysql HOUR() 占时区

node.js - Sequelize 在belongsToMany 关联中获取未知列

c# - 有效的类层次结构?

mysql - 我怎样才能加快这个MySQL查询?

mysql - flask 应用程序与 mysql 教程

sql - SELECT * from simple table with 50k records 似乎需要 40 秒

ruby-on-rails - Rails Postgresql 如何从一张表中获取 JOIN?

mysql - 将查询从 NOT IN 更改为 NOt EXISTS

python - mySQL时间戳错误并且插入完成但不显示

mysql - 如何获取最后一个值并对sql中的一组值求和?