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

SQL計算された列の最小値に基づいて行全体を取得します

    以下のクエリは機能しますが、列のステータスをstatus_codeに置き換えることを検討することをお勧めします コードを使用して、別のテーブルstatus(status_code,description)を作成します {非正規化}

    そしてインデックス付け(term_id,statUs_code

    これにより、私たちは自分で参加することができます。代わりに、このようなビューを作成してください。

    SELECT * FROM
    (SELECT *,(CASE sample.status
                             WHEN 'Arrived' THEN 1
                             WHEN 'Active' THEN 2
                             WHEN 'Pending Approval' THEN 3
                             WHEN 'Pending Confirmation' THEN 4
                             WHEN 'Pending Manual' THEN 5
                             WHEN 'Denied' THEN 6
                             WHEN 'Canceled' THEN 7
                    END) AS status_code FROM SAMPLE
      WHERE sample.term_id = 29
    ) my_view1,
    (SELECT BED_ID,MIN(CASE sample.status
                             WHEN 'Arrived' THEN 1
                             WHEN 'Active' THEN 2
                             WHEN 'Pending Approval' THEN 3
                             WHEN 'Pending Confirmation' THEN 4
                             WHEN 'Pending Manual' THEN 5
                             WHEN 'Denied' THEN 6
                             WHEN 'Canceled' THEN 7
                    END) AS status_code FROM SAMPLE
     WHERE sample.term_id = 29
     GROUP BY BED_ID
    ) my_view2
    WHERE my_view1.bed_id = my_view2.bed_id
     AND  my_view1.status_code = my_view2.status_code
    



    1. MariaDBでのATAN()のしくみ

    2. Oracleデータベース列の特定の値を置き換える方法は?

    3. Pythonを使用してBibTexファイルをデータベースエントリに変換する

    4. SQL Serverで無効になっているすべての制約を返す(T-SQLの例)