gpt4 book ai didi

mysql - 即使表 2 中没有行,如何连接表并显示

转载 作者:搜寻专家 更新时间:2023-10-30 20:20:50 24 4
gpt4 key购买 nike

我有 2 个表,一个是用户表,另一个是交易表。我正在尝试向所有用户显示他们的交易总和。

下面的语句显示正确,只是它只包括有交易的用户。如何列出所有用户,如果没有交易,它应该显示总和为 0?

这是我正在使用的语句:

SELECT 
user.ID, user.FirstName, user.LastName,
user.Username,
SUM(transaction.Amount) As Total
FROM user
LEFT JOIN transaction
ON user.ID = transaction.runnerID
WHERE user.event = 'EventX'
AND user.Active = 'True'
AND (user.tran_result = '1' OR user.tran_result ='manual' )
AND transaction.event = 'EventX'
AND (transaction.tran_result = '1' OR transaction.tran_result ='manual' )
GROUP BY user.ID
ORDER BY user.LastName ASC

我假设是 WHERE 语句删除了这些行,但如果我删除 WHERE 语句并将这些详细信息作为 LEFT JOIN 的一部分放置,它似乎只是挂起试图获得结果。 (大约有2000个用户和40000笔交易)

谢谢!

最佳答案

您需要将事务表的条件移动到 JOIN 条件中。将它放入 WHERE 子句中可以有效地将您的外部连接变成内部连接:

SELECT ....
FROM user
LEFT JOIN transaction
ON user.ID = transaction.runnerID
AND transaction.event = 'EventX'
AND (transaction.tran_result = '1' OR transaction.tran_result ='manual' )
WHERE user.event = 'EventX'
AND user.Active = 'True'
AND (user.tran_result = '1' OR user.tran_result ='manual' )
GROUP BY user.ID
ORDER BY user.LastName ASC

关于mysql - 即使表 2 中没有行,如何连接表并显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6819521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com