mysql - 如何连接两个 MySQL 表并检查第二个表中的行状态
问题描述
我正在查询一个表,并且还需要从另一个表中提取详细信息。
这是表中的payments
列
id, member, kwid, keyword, engine, start, ranking, price, month, year, sorter, status
这是我用来从表中提取的原始查询payments
:
SELECT member, SUM(price) AS revenue FROM payments WHERE status = 'Paid' GROUP BY member ORDER BY revenue DESC
该查询按我的意愿工作。它获取状态设置为已付款的付款列表,并按成员 ID 分组。
但是,我还想使用该成员 id ( member
) 从members
表中获取该成员的详细信息。
这是表中的列members
:
id, company, domain, email, status
我试过使用 INNER JOIN 但似乎无法让它工作。
这是那个查询:
SELECT member, SUM(price) AS revenue
FROM payments t1
WHERE status = 'Paid'
GROUP BY member
INNER JOIN members t2 ON t1.member = t2.id
ORDER BY revenue DESC
我基本上想要做的就是获得会员的company
,email
和domain
. 如果status
成员(在members
表中)未设置为Active
,我不想显示它。
解决方案
如果您想从列中获取详细信息members
并在列上进行聚合,请从以下方式payments
开始连接members
:
SELECT m.id, m.company, m.email, m.domain,
SUM(price) AS revenue
FROM members AS m INNER JOIN payments AS p
ON p.member = m.id
WHERE m.status = 'Active' AND p.status = 'Paid'
GROUP BY m.id, m.company, m.email, m.domain
ORDER BY revenue DESC
推荐阅读
- google-chrome-extension - 扩展是先运行还是脚本?
- javascript - 为什么第二个 else if 语句不执行,而是执行第一个?
- powershell - 从 .csv 文件部署 VM 时,Wait-Task 输出错误
- node.js - 尝试删除 cloudinary 上的非空目录时,Nodejs 应用程序崩溃
- prolog - 建立一个新的元素列表,在 Prolog 的旧列表中出现超过 3 次
- mysql - 如何在 SQL 中合并月份和年份列
- google-cloud-platform - GCP HA VPN 到 Fortigate (AUTHENTICATION_FAILED)
- algorithm - 查找小于或等于 n 且在其二进制表示中没有连续 '1' 的正整数的数量
- node.js - 这是使用 mongoose 在 MongoDB 中查询的正确方法吗
- python - Django HTML 变量中的图像字段