sql - 对先前查询的每个结果迭代地执行 SQL 查询
问题描述
这是一个 SQL 查询,用于检索用户 1 的所有消息类型 6 的消息。
SELECT COUNT(*)
FROM messages
WHERE messageType = '6' AND userId = '1'
假设我想写一个这样的查询,但不是只返回用户 1 的计数,而是返回一个表,其中包含表“用户”中每个用户的计数。
我将如何构建这样的东西?似乎我需要在这里使用类似于 for 循环的东西,但看起来 SQL 没有这样的东西。
解决方案
如果您打算从“用户”表中打印所有用户的列表,而不管“消息”表中是否存在与这些用户相关的任何相关消息。
下面的 SQL 将打印来自 'users' 和 'messages' 表的所有用户及其各自计数的列表。对于那些在“消息”表中没有相关消息的用户,它将显示“零”作为用户计数。
假设 - 'users' 表中的 'Id' 列代表 userId。
SELECT u.id, NVL(COUNT(1),0) as count_of_users
FROM users u left join messages m on u.id = m.userid and m.messageType = '6'
Group by u.id;
推荐阅读
- r - 使用 R 包“Rblpapi”从 Bloomberg 提取投资组合数据
- python - 有条件的前置填充 pandas DataFrame
- python - 如何划分包含用分号分隔的 int 和 string 值的列
- node.js - Mongoose 删除文档引用
- grafana - 将仪表板添加到向下钻取的内容
- reactjs - 在反应中从子组件调用动作
- python-3.x - 使用 pool.starmap 代码时未作为多进程运行
- mysql - .toList() 返回异常
- excel - Office VBA - 执行直到循环的逻辑标准失败
- google-chrome - 如何 --disable-site-isolation-trials --disable-web-security 使用 chrome 扩展而不使用命令?