我有查詢來選擇獲取答案值。我需要檢查它是否應答或爲空。我用(d.AM_Answer或null)它不起作用。它只取空值。所以,我改變了我的下面的查詢,但它不工作。如何使用IF和ELSE語句進行sql查詢
SELECT a.QM_ID,
a.QM_QCM_ID,
a.QM_Question,
a.QM_Type,
a.QM_Parent_Id,
c.AM_Answer,
c.AM_Comments
FROM question_master a
INNER JOIN Assessment_master c ON (c.AM_QM_ID = a.QM_ID
AND c.AM_HNM_ID = %d
AND c.AM_HM_ID = %d
AND c.AM_ASM_Local_Id = %@)
WHERE a.QM_Parent_Id = 0
AND a.QM_Status = 'A'
AND a.QM_QCM_ID = %@
AND a.QM_QRM_Id = %@ IF(d.AM_Answer IS NULL) THEN
UNION
SELECT b.QM_ID,
b.QM_QCM_ID,
b.QM_Question,
b.QM_Type,
b.QM_Parent_Id,
NULL,
NULL
FROM question_master b
INNER JOIN Assessment_master d ON ((d.AM_QM_ID = b.QM_Parent_Id
OR d.AM_QM_ID = b.QM_ID)
AND d.AM_HNM_ID = %d
AND d.AM_HM_ID = %d
AND d.AM_ASM_Local_Id = %@)
WHERE b.QM_Parent_Id != 0
AND b.QM_Status = 'A'
AND b.QM_QCM_ID = %@
AND b.QM_QRM_Id = %@ ELSE IF(d.AM_Answer IS NOT NULL) THEN
UNION
SELECT b.QM_ID,
b.QM_QCM_ID,
b.QM_Question,
b.QM_Type,
b.QM_Parent_Id,
d.AM_Answer,
d.AM_Comments
FROM question_master b
INNER JOIN Assessment_master d ON ((d.AM_QM_ID = b.QM_Parent_Id
OR d.AM_QM_ID = b.QM_ID)
AND d.AM_HNM_ID = %d
AND d.AM_HM_ID = %d
AND d.AM_ASM_Local_Id = %@)
WHERE b.QM_Parent_Id != 0
AND b.QM_Status = 'A'
AND b.QM_QCM_ID = %@
AND b.QM_QRM_Id = %@ END IF
從http://dev.mysql.com/doc/refman/5.7/en/working-with-null.html:不能使用算術比較運算符(如=,<, or <>)來測試NULL。 – mcalex
@mcalex他可以使用IS NULL –
我猜它知道goves你的錯誤,因爲聯合關鍵字 –