Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Warunki MySQL z wielu wierszy

Tak, musisz to zrobić za pomocą podzapytania, spróbuj czegoś takiego (jeśli chcesz, aby 4. wiersz miał dostęp do daty w 3. wierszu):

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

Możesz zobaczyć działające demo tutaj

Lub możesz wypróbować to zapytanie, jeśli chcesz, aby trzeci wiersz miał dostęp do daty w czwartym wierszu

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;

Możesz zobaczyć działające demo tutaj




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wątki Java i MySQL

  2. Czy możliwe jest WSTAWIANIE a następnie WYBIERANIE wstawionego wiersza jeden po drugim?

  3. Umieszczanie informacji z bazy danych mySQL w tablicy JavaScript

  4. Jak sprawdzić, czy zapytanie DELETE naprawdę usuwa wiersz, używając PDO?

  5. Porównanie czasów przełączania awaryjnego serwera proxy bazy danych — ProxySQL, MaxScale i HAProxy