sql >> データベース >  >> Database Tools >> phpMyAdmin

SQLクエリ:3つの数値の最大2を見つけて、別の列に格納します

    次のことを考慮してください

    mysql> create table test (sub1 int, sub2 int , sub3 int);
    Query OK, 0 rows affected (0.11 sec)
    
    mysql> insert into test values (20,30,40),(10,40,50),(30,10,20);
    Query OK, 3 rows affected (0.08 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> select * from test ;
    +------+------+------+
    | sub1 | sub2 | sub3 |
    +------+------+------+
    |   20 |   30 |   40 |
    |   10 |   40 |   50 |
    |   30 |   10 |   20 |
    +------+------+------+
    

    したがって、max1を取得するには およびmax2 greatestを使用できる列から 機能。

    select * ,
    greatest(sub1,sub2,sub3) as max1 , 
    greatest(
     case 
      when greatest(sub1,sub2,sub3) = sub1 then 0 else sub1 
     end,
     case 
      when greatest(sub1,sub2,sub3) = sub2 then  0 else sub2 
     end, 
     case 
      when greatest(sub1,sub2,sub3) = sub3 then 0 else sub3 
     end
    ) as max2 from test ;
    

    これはあなたに

    として何かを与えるでしょう
    +------+------+------+------+------+
    | sub1 | sub2 | sub3 | max1 | max2 |
    +------+------+------+------+------+
    |   20 |   30 |   40 |   40 |   30 |
    |   10 |   40 |   50 |   50 |   40 |
    |   30 |   10 |   20 |   30 |   20 |
    +------+------+------+------+------+
    

    これを更新コマンドに使用できます

    update table_name
    set 
    max1 = greatest(sub1,sub2,sub3),
    max2 = greatest(
     case 
      when greatest(sub1,sub2,sub3) = sub1 then 0 else sub1 
     end,
     case 
      when greatest(sub1,sub2,sub3) = sub2 then  0 else sub2 
     end, 
     case 
      when greatest(sub1,sub2,sub3) = sub3 then 0 else sub3 
     end
    ) 
    

    max1とmax2の平均を取得し、

    として更新するには
    update table_name
    set 
    `average`
    = ( 
       greatest(sub1,sub2,sub3)+
       greatest(
        case 
          when greatest(sub1,sub2,sub3) = sub1 then 0 else sub1 
        end,
        case 
          when greatest(sub1,sub2,sub3) = sub2 then  0 else sub2 
        end, 
        case 
          when greatest(sub1,sub2,sub3) = sub3 then 0 else sub3 
        end
         )
    )/2 ; 
    



    1. SQL Server Management Studioに代わるMac?

    2. SQLServerでvarcharリストをintに変換します

    3. phpMyAdmin-クエリ実行時間

    4. phpMyAdminを使用して外部サーバーに接続します