Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL SELECT id da linha onde GREATEST of MAX entradas de várias colunas


uma maneira de fazer isso seria armazenar sua data em uma variável definida pelo usuário. então você pode usá-lo para extrair o id para a maior data
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

DEMO DE FIDDLE