首页 > 解决方案 > 如何连接两个 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,emaildomain. 如果status成员(在members表中)未设置为Active,我不想显示它。

标签: mysqlsql

解决方案


如果您想从列中获取详细信息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

推荐阅读