前端有一个复选框。
如果选中该复选框:只检查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是复选框的列名。
答案 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
存储过程的使用将为您提供所选数据,并且查询在数据库中进行了预编译,因此速度更快。
注意:我不太明白你的查询是什么回复所以用我的替换我的