【问题标题】:IF else statement inside select statement in sqlsql中select语句中的if else语句
【发布时间】:2014-11-03 17:26:39
【问题描述】:

如何使用 mysql 将 if else 语句插入到 select 语句中?请帮我。我是新来的.. 我试过使用分隔符,但他们有错误.. 比如这个语句:

SELECT c_id
  FROM customer
 WHERE city = 'AZ';

SELECT order_no,
       o_status 
  FROM order_status,
       customer
 WHERE order_status.c_id = customer.c_id;

UPDATE order_status 
   SET item_total=0
 WHERE o_status='waiting';

【问题讨论】:

  • 您为什么不描述一下您想做什么以及为什么需要一个 IF 以便我们更好地了解您的情况并为您提供最佳解决方案?
  • 我只想知道如何在 select 语句中使用 if-else 语句.. 尽管有任何条件。我可以在 select 语句中使用分隔符吗?
  • 您的示例中没有任何 IF 语句。你只有三个陈述。展示你的尝试。显示错误。展示你想要达到的目标。
  • 您似乎有一些编程背景,并且正在努力将您的编程世界观与 SQL 合并。请看下面Edi G.的答案,看来他可能已经读懂了你的意图,并为你翻译成SQL思维。显然没有必要将 IF/ELSE 插入这 3 个查询中的任何一个,但如果不说明,您可能想知道如何有效地组合这些部分。

标签: mysql database select if-statement


【解决方案1】:

我不确定我的问题是否正确,但以下是否应该有效?

    UPDATE order_status 
       SET item_total=0
      FROM order_status os
INNER JOIN customer c
        ON c.c_id = os.c_id
     WHERE os.o_status='waiting' AND c.city = 'AZ'

【讨论】:

    【解决方案2】:
    IF(expr1,expr2,expr3)
    

    如果 expr1 为 TRUE(expr1 0 且 expr1 NULL),则 IF() 返回 expr2;否则返回 expr3。 IF() 返回一个数字或字符串值,具体取决于使用它的上下文。

    mysql> SELECT IF(1>2,2,3);
            -> 3
    mysql> SELECT IF(1<2,'yes','no');
            -> 'yes'
    mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
            -> 'no'
    

    如果 expr2 或 expr3 中只有一个显式为 NULL,则 IF() 函数的结果类型为非 NULL 表达式的类型。

    IF() 的默认返回类型(在将其存储到临时表时可能很重要)计算如下。 表达式返回值

    expr2 or expr3 returns a string string
    expr2 or expr3 returns a floating-point value   floating-point
    expr2 or expr3 returns an integer   integer
    

    如果 expr2 和 expr3 都是字符串,如果其中一个字符串区分大小写,则结果区分大小写。

    【讨论】:

      猜你喜欢
      • 2014-02-15
      • 1970-01-01
      • 2012-11-11
      • 2017-07-06
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多