2013-03-07 91 views
2

情况1:MySQL:如何在所有字段为NULL时返回空记录?

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 


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

+0

任何时候,你会得到至少一排。 – Kermit 2013-03-07 18:32:45

回答

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; 
相关问题