sql >> データベース >  >> RDS >> Mysql

最小関数の結果の列名を取得するにはどうすればよいですか?

    caseを使用できます ステートメント:

    CASE
    WHEN LEAST(q1, q2, q3, q4) = q1 THEN 'q1'
    WHEN LEAST(q1, q2, q3, q4) = q2 THEN 'q2'
    WHEN LEAST(q1, q2, q3, q4) = q3 THEN 'q3'
    ELSE 'q4'
    END as minQuestion
    

    (注:関係を超えて情報が失われます。)

    ネクタイに興味がある場合は、サブクエリと配列を使用してネクタイにアプローチすると、うまくいきます。

    with employee as (
      select id, q1, q2, q3, q4
      from (values
        (1, 1, 1, 3, 4),
        (2, 4, 3, 1, 1)
      ) as rows (id, q1, q2, q3, q4)
    )
    
    SELECT least(q1, q2, q3, q4),
           array(
             select q
             from (values (q1, 'q1'),
                          (q2, 'q2'),
                          (q3, 'q3'),
                          (q4, 'q4')
                  ) as rows (v, q)
             where v = least(q1, q2, q3, q4)
           ) as minQuestions
    FROM employee e
    WHERE e.id = 1;
    


    1. 挿入する前に重複を確認してください

    2. MySQLで2つのデータベーススキーマを同期します

    3. 別のアプリケーションから1つのアプリケーションのデータベースにアクセスする

    4. タグ(キーワード)をデータベースに保存する方法は?