sql >> Database >  >> RDS >> Mysql

MySQL-voorwaarden van meerdere rijen

Ja, je moet dit doen met een subquery, probeer iets als dit (als je wilt dat de 4e rij toegang heeft tot de datum in de 3e rij):

SELECT  mo.AgentID, mo.date,
        @r AS 'LAG(date)',
        (case when @r<Date then 'YES' when @r is null then 'IS NULL' else 'NO' end) 'Is Bigger',
        (@r := Date) AS Date

FROM    (
        SELECT  m.*
        FROM    (
                SELECT  @_date = NULL
                ) variable,
                data m
        ORDER BY
                AgentID 
        ) mo
WHERE  (CASE WHEN @_date IS NULL OR @_date <> date THEN @r := NULL ELSE NULL END IS NULL)
        AND (@_date := date) IS NOT NULL

Je kunt hier een werkende demo zien

Of u kunt deze zoekopdracht proberen als u wilt dat de 3e rij toegang heeft tot de datum in de 4e rij

SELECT AgentID,date,LEAD_date,concat(Difference,' days') FROM
(SELECT  mo.AgentID, 
        @r AS LEAD_date,
        DATEDIFF(@r,Date) as Difference,
        (@r := Date) AS Date

FROM    (
        SELECT  m.*
        FROM    (
                SELECT  @_date = NULL
                ) variable,
                data m
        ORDER BY
                AgentID,date desc 
        ) mo
WHERE  (CASE WHEN @_date IS NULL OR @_date <> date THEN @r := NULL ELSE NULL END IS NULL)
        AND (@_date := date) IS NOT NULL) T
order by AgentID,date;

U kunt hier een werkende demo zien




  1. Hoe u de tabelrandstijl in de psql-queryresultaten kunt wijzigen

  2. Een GeoJson maken in php vanuit MySql om te gebruiken met MapBox javascript API

  3. PHP Overerving en MySQL

  4. group_concat resultaat werkt niet in IN voorwaarde