mysql - 嵌套case语句sql

标签 mysql sql sql-server

我在用 SQL 编写 case 语句时遇到问题。我的第一个问题是:是否可以将下面的 if 语句写成 select 语句中 SQL 查询中的 case 语句?

如果不是,那么请查看下面的案例陈述并帮助/指导我进入有效格式。谢谢,非常感谢!

IF (var1 = 1){
do this1;
IF (var 1 = 2){
    Do this2;
    }Else{ 
    do something else1;
    }
Else if (Var 1 = 3){
    Do this3; 
    }Else{ 
    Do something else2;
    }   

这是我的案例陈述。我知道它不起作用,因为它不是有效的案例陈述。有人可以帮助我使其成为有效的案例陈述吗?提前致谢。

    SELECT
CASE
    WHEN apple.type = 1 OR apple.type = 2
    THEN basket.S1
    ELSE 
        CASE 
            WHEN apple.type = 0 AND basket.S2 is null
            THEN basket.S1
            ELSE basket.S2  
        ELSE 
            CASE
                WHEN apple.type = 3 and basket.s3 is null
                THEN basket.S1
                ELSE basket.S3
            END
        END
    END 
FROM .....
WHERE ..... 

最佳答案

我认为你的案例陈述过于复杂,看看你的第一个例子,你的案例陈述应该相当简单,

有点像....

SELECT CASE 
           WHEN @Var1 = 1 THEN 'Something 1'
           WHEN @Var1 = 2 THEN 'Something 2'
           WHEN @Var1 = 3 THEN 'Something 3'
           ELSE 'Something Else'
       END 
FROM .....
WHERE .....

你的case statement我们能不能写成这样...

SELECT
    CASE
        WHEN apple.[type] IN (1,2)
        THEN basket.S1
        WHEN apple.type = 0 AND basket.S2 is null
        THEN basket.S1
        WHEN apple.type = 3 and basket.s3 is null
        THEN basket.S1
        ELSE basket.S3
    END

关于mysql - 嵌套case语句sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31215089/

相关文章:

javascript - 对表单输入执行计算

sql - 删除超过一天的记录

sql - 如何防止 SQLite 中的触发器递归?

sql - 在sql server中选择单行作为多行

sql-server - ora-00936 缺少表达式选择语句

mysql - 多个主/外键

php - Codeigniter MySQL 安全性、htmlspecialcharacters 和 mysql_real_escape_string?

mysql - 查找每种产品的总命中率和唯一命中率

sql - 一些有关SQL Server死锁的好教程?

mysql - sql查询计算同一列的最小和最大日期之间的总天数