考慮以下MySQL的聲明:多CASE語句與否定
SELECT costs.cost AS package, payments.cost AS labs, patients.fname, patients.lname, patients.sname, visit.id AS visitid, patients.id, pharm_payments.cost AS pharm_costs ,costs.cost+payments.cost+pharm_payments.cost AS total_cost ,
CASE pharm_payments.cost WHEN pharm_payments.visitid=visit.id THEN pharm_payments.cost
WHEN pharm_payments.visitid != visit.id THEN 0
CASE costs.cost WHEN cost.visitid=visit.id THEN costs.cost
WHEN costs.visitid != visit.id THEN 0
FROM costs
LEFT JOIN visit ON costs.visitid = visit.id
LEFT JOIN patients ON visit.patientid = patients.id
LEFT JOIN pharm_payments ON pharm_payments.visitid = visit.id
LEFT JOIN payments ON payments.visitid = visit.id
WHERE costs.paid = 'not paid'
AND visit.VisitDate >= CURDATE()
LIMIT 0 , 30
從查詢期望的結果應該是訪問ID是哪裏不一樣,它應該返回零值。我不斷收到以下錯誤:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE costs.cost WHEN cost.visitid=visit.id THEN costs.cost WHEN costs.visitid !=' at line 4
如何解決此錯誤?
我不確定'WHEN/THEN',但它看起來像你可以更容易地實現這個'IF(condition,when_true,when_false)' – Halcyon
爲什麼你在我這裏? –
你忘了閱讀[CASE'的文檔](http://dev.mysql.com/doc/refman/5.7/en/case.html)嗎?語法是_right there_。真的很難錯過。 –