Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何使用if-else编写sql查询语句_Mysql_Sql - Fatal编程技术网

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是的,你是对的。里马斯和穆雷尼克的答案看起来更简洁。