如何在SQL中的Select Query中使用If / Else或Case语句作为复选框

时间:2014-12-02 12:07:50

标签: sql if-statement checkbox case

前端有一个复选框。

如果选中该复选框:只检查chk1的数据应出现在前端。

如果未选中该复选框:前端应显示完整数据。

请建议我如何在SQL中使用If else / Case语句继续使用相同的内容。

我正在使用:

SELECT *
FROM table1
where (some conditions) AND
    CASE @a.Id_Oem_Irm
        WHEN 0 THEN (a.id_oem_irm in(0,1))
        WHEN 1 THEN (a.id_oem_irm in (1))
    END

PS:a.Id_Oem_Irm:a是表名,Id_oem_irm是复选框的列名。

3 个答案:

答案 0 :(得分:0)

我建议将其写成:

where (some conditions) AND
      ((@a.Id_Oem_Irm = 0 and a.id_oem_irm in(0, 1)) OR
       (@a.Id_Oem_Irm = 1 and a.id_oem_irm in (1) )
      )

我不确定@a.Id_Oem_Irm应该是什么。我怀疑你想要一个变量。

答案 1 :(得分:0)

或者你可以这样调整一下:

SELECT *
FROM table1
where (some conditions) AND
    (a.id_oem_irm = 1 OR
    @a.Id_Oem_Irm = 0)

这仅在@a.Id_Oem_Irm始终为0或1时有效。否则,您显然应添加@a.Id_Oem_Irm IN (0,1)<= 1(如果它不能为负)条件。

什么是a?您没有在此处包含的另一个表的别名?

答案 2 :(得分:-1)

更简单的方法是创建一个存储过程,输入“@ a.Id_Oem_Irm”

实施例

CREATE PROCEDURE p_get_a_data(
IN Id INT(1)
)
BEGIN
  IF (Id = 0) BEGIN
     --YOur query to retrieve partiular row/ column
  END;

  IF(Id = 1) BEGIN
    --YOur query to retrieve all data
     SELECT * FROM table1
        where (some conditions)
  END;

END

存储过程的使用将为您提供所选数据,并且查询在数据库中进行了预编译,因此速度更快。

注意:我不太明白你的查询是什么回复所以用我的替换我的