ホームページ  >  記事  >  データベース  >  mysql case はどのような場合に使用するのですか?

mysql case はどのような場合に使用するのですか?

coldplay.xixi
coldplay.xixiオリジナル
2020-09-03 11:33:275612ブラウズ

mysql case の使用法は次のとおりです: 1. 単純な検索として使用され、構文は [CASE [col_name] WHEN [value1]]; 2. 検索関数として使用され、構文は [CASE WHEN] [式] THEN [結果1]]。

mysql case はどのような場合に使用するのですか?

【関連する学習の推奨事項: mysql チュートリアル(ビデオ)】

mysql case when の使用法は次のとおりです:

case when には 2 つの構文があります

単純な関数

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

検索関数

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

これら 2 つの構文の違いは何ですか?

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;
复制代码
复制代码
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
            &#39;少年&#39;
        WHEN age < 30 THEN
            &#39;青年&#39;
        WHEN age >= 30
        AND age < 50 THEN
            &#39;中年&#39;
        ELSE
            &#39;老年&#39;
    END &#39;状态&#39;
FROM
    user_info;
聚合函数 sum 配合 case when 的简单函数实现行转列
SELECT
    st.stu_id &#39;学号&#39;,
    st.stu_name &#39;姓名&#39;,
    sum(
        CASE co.course_name
        WHEN &#39;大学语文&#39; THEN
            sc.scores
        ELSE
            0
        END
    ) &#39;大学语文&#39;,
    sum(
        CASE co.course_name
        WHEN &#39;新视野英语&#39; THEN
            sc.scores
        ELSE
            0
        END
    ) &#39;新视野英语&#39;,
    sum(
        CASE co.course_name
        WHEN &#39;离散数学&#39; THEN
            sc.scores
        ELSE
            0
        END
    ) &#39;离散数学&#39;,
    sum(
        CASE co.course_name
        WHEN &#39;概率论与数理统计&#39; THEN
            sc.scores
        ELSE
            0
        END
    ) &#39;概率论与数理统计&#39;,
    sum(
        CASE co.course_name
        WHEN &#39;线性代数&#39; THEN
            sc.scores
        ELSE
            0
        END
    ) &#39;线性代数&#39;,
    sum(
        CASE co.course_name
        WHEN &#39;高等数学&#39; THEN
            sc.scores
        ELSE
            0
        END
    ) &#39;高等数学&#39;
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;

もっと知りたい プログラミング学習は、php trainingのコラムに注目してください!

以上がmysql case はどのような場合に使用するのですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。