Mysql 如何使用if-else编写sql查询语句
我想从数据库中选择Mysql 如何使用if-else编写sql查询语句,mysql,sql,Mysql,Sql,我想从数据库中选择 if id=0 select * from tbl else select * from tbl where id= :id 如何在mysql查询中使用它?两个查询之间的区别在于where子句-您可以使用or逻辑运算符表示: if (id=0) then select * from tbl else select * from tbl where id= :id end if; SELECT * FROM tbl WHERE (:id = id) OR (:
if id=0 select * from tbl
else select * from tbl where id= :id
如何在mysql查询中使用它?两个查询之间的区别在于where子句-您可以使用or逻辑运算符表示:
if (id=0) then
select * from tbl
else
select * from tbl where id= :id
end if;
SELECT *
FROM tbl
WHERE (:id = id) OR (:id = 0)
SELECT *
FROM tbl
WHERE :id IN (id, 0)
当然,这可以通过in操作员进一步清理:
SELECT *
FROM tbl
WHERE (:id = id) OR (:id = 0)
SELECT *
FROM tbl
WHERE :id IN (id, 0)
两个查询之间的区别只是where子句-您可以使用or逻辑运算符表示:
SELECT *
FROM tbl
WHERE (:id = id) OR (:id = 0)
SELECT *
FROM tbl
WHERE :id IN (id, 0)
当然,这可以通过in操作员进一步清理:
SELECT *
FROM tbl
WHERE (:id = id) OR (:id = 0)
SELECT *
FROM tbl
WHERE :id IN (id, 0)
试试这个:
select * from tbl where :id = 0
union all
select * from tbl where :id <> 0 and id = :id
这只是一个查询,它将只执行一个分支作为指定的:id值。当:id=0时,第一个查询的where条件变为true,结果与tbl中的select*相同。当:id0时,第一个查询的结果将为空,但是,第二个查询将返回select*from tbl的结果,其中id=:id.尝试以下操作:
select * from tbl where :id = 0
union all
select * from tbl where :id <> 0 and id = :id
这只是一个查询,它将只执行一个分支作为指定的:id值。当:id=0时,第一个查询的where条件变为true,结果与tbl中的select*相同。当:id0时,第一个查询的结果将为空,但是,第二个查询将返回select*from tbl的结果,其中id=:id.我认为您应该创建一个以您的id为参数的函数,然后可以使用mySql IF语句。 这里有关于IF语句和函数示例的简单快速教程
请注意,mySql也有内置的IF函数。我认为您应该创建一个以id为参数的函数,然后可以使用mySql IF语句。 这里有关于IF语句和函数示例的简单快速教程
请注意,mySql也有内置的IF函数。从id的来源,您指的是过程/函数。从id的来源,您指的是过程/函数。似乎在id=0的情况下,OP希望获取整个表。我的选项卡中的id为1 2 3,我希望当用户dosent set id显示id为1 2和3的所有行时,您不是在谈论id=0,而是关于:id=0-相应地编辑我的解决方案。似乎在id=0的情况下,OP希望获取整个表。我的选项卡中的id为1 2 3,我希望当用户dosent set id显示id为1 2和3的所有行时,您不是在谈论id=0,而是关于:id=0-相应地编辑了我的解决方案。@X.L.Ant是的,您是对的。Rimas和Mureinik的答案看起来更简洁。@X.L.Ant是的,你是对的。里马斯和穆雷尼克的答案看起来更简洁。