它不識別「總和」。爲什麼?它不識別「總和」。爲什麼?
SELECT c.c_id, c.c_name, SUM(p.p_sum) AS sum
FROM clients c, contracts_rent r, payments p
WHERE c.c_id = r.c_id
AND r.contract_id = p.contract_id and sum>1300
GROUP BY c.c_id
它不識別「總和」。爲什麼?它不識別「總和」。爲什麼?
SELECT c.c_id, c.c_name, SUM(p.p_sum) AS sum
FROM clients c, contracts_rent r, payments p
WHERE c.c_id = r.c_id
AND r.contract_id = p.contract_id and sum>1300
GROUP BY c.c_id
類似...
SELECT c.c_id, c.c_name, SUM(p.p_sum) AS sum
FROM clients c, contracts_rent r, payments p
WHERE c.c_id = r.c_id
AND r.contract_id = p.contract_id
GROUP BY c.c_id
HAVING SUM(p.p_sum) > 1300
當你想在聚合函數值過濾,使用HAVING關鍵字
彙總列通常不能一where
子句中,因爲該條款發生前聚集處理。
你需要的是having
子句,它在聚合後發生。
比較類似:
select id, something, p_sum from tbl
where p_sum > 100
到:
select id, something, sum(p_sum) from tbl
group by something
having sum(p_sum) > 100
前者選擇單個行,其中該行的總和是something
大於100,後者組然後選擇分組的行總彙總數大於100.
SELECT c.c_id, c.c_name, SUM(p.p_sum) AS sum
FROM clients c, contracts_rent r, payments p
WHERE c.c_id = r.c_id
AND r.contract_id = p.contract_id
GROUP BY c.c_id
HAVING SUM(p.p_sum) > 1300
確保你保持聯接記住得到相應的結果。
什麼是錯誤信息?它是MySQL嗎? –