我有一个包含用户付款详细信息的表,另一个表包含用户列表。我希望从付款详细信息中获取所有用户的余额,但仅限于未被禁止的用户(这是用户表中的列)。
我对嵌套查询有些新意,所以我不知道该怎么做?
这是我到目前为止所尝试的......
mysql_query("
SELECT SUM(balance)
FROM payment_details
WHERE (SELECT ban
FROM users
WHERE username=username
) != '1'
")
注意:用户名是两个表中的一列。
以上查询不起作用。
回顾:有两个表:payment_details和users。我想为所有未被禁止的用户添加余额列。
答案 0 :(得分:3)
请勿在此处使用子查询。相反,请使用JOIN
。
SELECT SUM(payment_details.balance) FROM payment_details
JOIN users ON payment_details.username = users.username
WHERE ban != '1'
答案 1 :(得分:1)
同意,加入可能是你想要的。
但是要回答具体问题,您可以尝试查询:
SELECT SUM(payment_details.balance)
FROM payment_details
WHERE payment_details.username in (
SELECT users.username
FROM users WHERE ban != '1'
);
请注意,从问题中不清楚您是想要每个用户的总和,还是所有用户的总和。上述查询提供后者 - 不按用户分组。
答案 2 :(得分:0)
查询是:
SELECT SUM(balance) FROM payment_details JOIN users ON payment_details.username=users.username WHERE users.ban !='1' group by payment_details.username
顺便说一句,处理用户ID会比使用用户名好得多