2

情况一:

SELECT SUM(mark) AS totalMark, userID, credit
FROM users, marks
WHERE marks.receiverID = users.userID
AND userID = '2'

它会回来

totalMark   userID  credit
---------------------------
0           2       0.0



而且非常好,没问题。但这里是情况2:

SELECT SUM(mark) AS totalMark, userID, credit
FROM users, marks
WHERE marks.receiverID = users.userID
AND userID = '-1'

结果:

totalMark   userID  credit
---------------------------
NULL        NULL    NULL


但我想要的是什么都不返回(没有找到记录)。任何人都可以帮助我吗?

4

1 回答 1

2

当您使用像 SUM() 这样的聚合函数时,查询必然会返回一行。但由于它没有对任何值求和,因此求和的结果是未定义的。

您可以通过以下方式解决此问题:

SELECT * FROM (
    SELECT SUM(mark) AS totalMark, userID, credit
    FROM users, marks
    WHERE marks.receiverID = users.userID
    AND userID = '-1'
) t
WHERE t.totalMark IS NOT NULL;
于 2013-03-07T18:32:08.657 回答