2014-10-08 57 views
1

我想从DB如何编写SQL查询语句的if-else

if id=0 select * from tbl 
else select * from tbl where id= :id 

如何在MySQL查询使用它选择?

+0

从哪里来,你正在谈论程序/功能。 – 2014-10-08 08:33:26

回答

2

试试这个:

select * from tbl where :id = 0 
union all 
select * from tbl where :id <> 0 and id = :id 

这只是一个查询,并且它将只执行一个分支,作为指定的:id值。当:id=0,第一个查询的条件成为true,结果与select * from tbl相同。当:id<>0,第一个查询的结果将是空的,但是,第二个查询将返回select * from tbl where id=:id的结果。

+0

这可以在没有UNION ALL的情况下完成。无论如何。 – 2014-10-08 08:41:36

+0

@ X.L.Ant是的,你是对的。 Rimas和Mureinik的答案看起来更加紧凑。 – ntalbs 2014-10-08 08:42:26

1
if (id=0) then 
select * from tbl 
else 
select * from tbl where id= :id 
end if; 
+0

it剂量工作在findii()yii – Sepideh 2014-10-08 08:51:12

2

两个您的查询之间的区别仅仅是where条款 - 你可以用or逻辑运算表达这样的:

SELECT * 
FROM tbl 
WHERE (:id = id) OR (:id = 0) 

当然,这可以进一步与in运营商清理:

SELECT * 
FROM tbl 
WHERE :id IN (id, 0) 
+0

似乎在id = 0的情况下,OP想要获取整个表。 – 2014-10-08 08:35:13

+0

我的tabel中的id是1 2 3,我想当用户dosent设置id显示id为1和3的所有行时 – Sepideh 2014-10-08 08:36:29

+0

然后你不是在谈论id = 0,而是关于':id = 0' - 编辑我的解决方案。 – Mureinik 2014-10-08 08:38:51

1
SELECT * 
    FROM tbl 
    WHERE id = :id OR 0 = :id 
0

我认为你应该创建函数,将你的id作为参数,然后你可以使用mySql的IF语句。 在这里,您可以获得有关IF语句的简单快速教程以及功能IF statement的示例。

要知道,MySQL已经集结在IF()函数也。