sql >> Database teknologi >  >> Database Tools >> phpMyAdmin

SQL-forespørgsel:Find maks. 2 af 3 tal, og gem det i en anden kolonne

Overvej følgende

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 |
+------+------+------+
 

Så for at få max1 og max2 fra kolonnerne kan du bruge greatest funktion.

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 ;
 

Dette vil give dig noget som

+------+------+------+------+------+ | sub1 | sub2 | sub3 | max1 | max2 | +------+------+------+------+------+ | 20 | 30 | 40 | 40 | 30 | | 10 | 40 | 50 | 50 | 40 | | 30 | 10 | 20 | 30 | 20 | +------+------+------+------+------+

Du kan bruge dette til opdateringskommando som

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
) 
 

For at få gennemsnittet af max1 og max2 og opdatere som

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. MySQL Vis nulresultater i forespørgsel - med INDRE JOIN

  2. Sådan ændres SQL i Rediger Top 200 Rows i SSMS 2008

  3. Sådan får du vist den lagrede procedurekode i SQL Server Management Studio

  4. xampp phpmyadmin adgang nægtet fejl (#2002)