Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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语句_Mysql_Sql_If Statement - Fatal编程技术网

如何在mysql中编写IF语句

如何在mysql中编写IF语句,mysql,sql,if-statement,Mysql,Sql,If Statement,我有一个带有类型字段的表 如何在查询中检查此字段: 我想检查它是否键入a 然后bes=amount,bed='-' 其他bed=金额,bes='-' bes和bed在我的表格中不存在,但数量为(int) 这是我的尝试: SELECT billing.*, CASE billing.type WHEN 'A' THEN billing.amount AS bes, '-' AS bed ELSE billing.amount AS bed, '-' AS bes END FROM

我有一个带有
类型
字段的表

如何在查询中检查此字段:

我想检查它是否键入a

然后
bes
=
amount
bed
='-'

其他
bed
=
金额
bes
='-'

bes和bed在我的表格中不存在,但数量为(int)

这是我的尝试:

SELECT billing.*,
    CASE billing.type WHEN 'A' THEN billing.amount AS bes, '-' AS bed ELSE billing.amount AS bed, '-' AS bes END
    FROM billing
。。。我的搜索没有用

任何解决方案…

一个只能有一个返回值

这应该可以做到:

SELECT billing.*,
CASE billing.type WHEN 'A' THEN billing.amount ELSE '-' END AS bes,
CASE billing.type WHEN 'A' THEN '-' ELSE billing.amount END AS bed 
FROM billing

您需要两个案例陈述:

SELECT billing.*,
  CASE billing.type WHEN 'A' THEN billing.amount ELSE '-' AS bes END,
  CASE billing.type WHEN 'A' THEN '-' ELSE billing.amount AS bed END
FROM billing
选择计费。*,
当billing.type='A'然后billing.amount ELSE 0结束为bes时的情况,
开单时的情况。键入“A”,然后开单。其他金额0结束为bed
从帐单

您可以为每一行创建条件,
MySQL
支持内联
IF
语句

SELECT billing.*,
       IF(billing.type = 'A', billing.amount, '-') AS bes,
       IF(billing.type = 'A', '-', billing.amount) AS bed
FROM   billing

根据您的MySQL版本,您可以对
大小写
(1)、(2)使用两种不同语法中的一种或两种


正如你所看到的,我们都非常同意这里的正确解决方案:-)那很好。。。当我在单独的查询中尝试此操作时,没有问题,但在我的项目中。。。错误你犯了什么错误?
SELECT billing.*,
       IF(billing.type = 'A', billing.amount, '-') AS bes,
       IF(billing.type = 'A', '-', billing.amount) AS bed
FROM   billing
SELECT *,
  (IF type = 'A' THEN amount ELSE '-' END IF) bes,
  (IF type = 'A' THEN '-' ELSE amount END IF) bed
FROM billing