如何对SQL中的Select查询中的复选框使用If/Else或Case语句

如何对SQL中的Select查询中的复选框使用If/Else或Case语句,sql,if-statement,checkbox,case,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

我在前端有一个复选框

如果选中该复选框:只有选中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\u Oem\u Irm:a是表名,Id\u Oem\u Irm是复选框的列名。

我建议这样写:

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\u Oem\u Irm
应该是什么。我怀疑您需要一个变量。

或者您可以将其调整为如下:

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

这仅在
@a.Id\u Oem\u Irm
始终为0或1时有效。否则,您显然应该在(0,1)或
中添加
@a.Id\u Oem\u Irm。更简单的方法是创建一个StoredProcess,它将接受输入“@a.Id\u Oem\u Irm”

例子: 存储过程的使用将为您提供选定的数据,并且查询将在数据库中预编译,以加快查询速度


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

是的,a是一个表的别名。Id\u Oem\u irm的值应为0或1。。如果选中复选框,它将有1个值&如果未选中,它将有0个值。请注意,我将它简化了一点。这对您有效吗?获取错误:必须声明标量变量“@a”。该
@a
在您的代码中。。。如果你不知道它是什么,没有人知道P您从哪里收到复选框值?a是表名,Id_Oem_irm是该表中表示复选框值的列。i添加了格式并修复了您的代码,这更像是C而不是SQL。但是,SP超出了问题的范围;他的剧本可能已经在一本书里了P当一个查询就足够时,复制脚本是一种不好的做法。创建存储过程为新人提供了灵活性和可理解性
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