sql >> Databasteknik >  >> RDS >> Mysql

MySQL SELECT ID för rad där STÖRSTA av MAX poster i flera kolumner

ett sätt att göra det skulle vara att lagra ditt datum i en användardefinierad variabel. sedan kan du använda den för att dra ut id:t för det största datumet

SET @A := (SELECT GREATEST(
                     IFNULL(max(date1), 0),
                     IFNULL(max(date2), 0),
                     IFNULL(max(date3), 0)
                  ) FROM table1
           );
-- here i JOIN a select that pulls out the correct id
SELECT t.joinid, max(`date1`), max(`date2`), max(`date3`)
FROM table1
JOIN 
(   SELECT id as joinid 
    FROM table1
    WHERE @A IN -- WHERE my MAX date is in
    (
        SELECT date1 -- here the UNION is just putting all of the dates into one column to compare one date with
        UNION ALL SELECT date2
        UNION ALL SELECT date3
    )
) t -- every table must have an alias

FIDDLE DEMO



  1. Ta bort dubbletter av tabeller

  2. Ta bort alla tecken efter ett specifikt tecken i PL/SQL

  3. MySQL sök och ersätt syntaxfel

  4. Sammanfoga värden från flera kolumner i Oracle