2

状況 1:

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 に答える