sql >> Database >  >> RDS >> Mysql

MySQL SELECT ID van rij waar GROOTSTE van MAX vermeldingen van verschillende kolommen

een manier om dit te doen zou zijn om uw datum op te slaan in een door de gebruiker gedefinieerde variabele. dan kun je het gebruiken om de id voor de grootste datum eruit te halen

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. Beperkingen toevoegen met behulp van subquery's uit een andere tabel

  2. Meerdere native queries in één keer uitvoeren

  3. Snellere manier om overeenkomende rijen te verwijderen?

  4. Hoe een mysql-opgeslagen procedure in Windows plannen?