首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用IF和ELSE语句进行sql查询

如何使用IF和ELSE语句进行sql查询
EN

Stack Overflow用户
提问于 2014-02-27 13:38:12
回答 3查看 157关注 0票数 1

我有查询可供选择,以获取答案。我需要检查它是否应答或为空。我使用了(d.AM_Answer或null)它不工作。它只接受空值。所以,我像下面这样更改了我的查询,但它不起作用。

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2014-02-27 13:42:32

1)要检查空值,可以使用COALESCE运算符。

2)也可以使用SQL CASE语句

3)我建议您在准备动态查询时使用存储过程

票数 0
EN

Stack Overflow用户

发布于 2014-02-27 13:44:13

您可以将where条件d.answer is not null放在其中以选择非null答案。

票数 0
EN

Stack Overflow用户

发布于 2014-02-27 13:47:07

试一试

代码语言:javascript
复制
IF(d.AM_Answer IS null)

而不是

代码语言:javascript
复制
IF(d.AM_Answer == null)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22059924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档