MySQL 的 case when 的語法


MySQL 的 case when 的語法有兩種:

1.簡單函數 

CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END

SELECT
    NAME '英雄',
    CASE NAME
        WHEN '德萊文' THEN
            '斧子'
        WHEN '德瑪西亞-蓋倫' THEN
            '大寶劍'
        WHEN '暗夜獵手-VN' THEN
            ''
        ELSE
            ''
    END '裝備'
FROM
    user_info;

 

 

 

2.搜索函數 

CASE WHEN [expr] THEN [result1]…ELSE [default] END

# when 表達式中可以使用 and 連接條件
SELECT
    NAME '英雄',
    age '年齡',
    CASE
        WHEN age < 18 THEN
            '少年'
        WHEN age < 30 THEN
            '青年'
        WHEN age >= 30
        AND age < 50 THEN
            '中年'
        ELSE
            '老年'
    END '狀態'
FROM
    user_info;

聚合函數 sum 配合 casewhen 的簡單函數實現行轉列

聚合函數 sum 配合 case when 的簡單函數實現行轉列
SELECT
    st.stu_id '學號',
    st.stu_name '姓名',
    sum(
        CASE co.course_name
        WHEN '大學語文' THEN
            sc.scores
        ELSE
        END
    ) '大學語文',
    sum(
        CASE co.course_name
        WHEN '新視野英語' THEN
            sc.scores
        ELSE
        END
    ) '新視野英語',
    sum(
        CASE co.course_name
        WHEN '離散數學' THEN
            sc.scores
        ELSE
        END
    ) '離散數學',
    sum(
        CASE co.course_name
        WHEN '概率論與數理統計' THEN
            sc.scores
        ELSE
        END
    ) '概率論與數理統計',
    sum(
        CASE co.course_name
        WHEN '線性代數' THEN
            sc.scores
        ELSE
        END
    ) '線性代數',
    sum(
        CASE co.course_name
        WHEN '高等數學' THEN
            sc.scores
        ELSE
        END
    ) '高等數學'
FROM
    edu_student st
LEFT JOIN edu_score sc ON st.stu_id = sc.stu_id
LEFT JOIN edu_courses co ON co.course_no = sc.course_no
GROUP BY
    st.stu_id
ORDER BY
    NULL;

 

 

參考鏈接:

https://www.cnblogs.com/chenduzizhong/p/9590741.html

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM