Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL условия от множество редове

Да, трябва да направите това с подзаявка, опитайте с нещо подобно (ако искате 4-ти ред да има достъп до датата на 3-ти ред):

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

Можете да видите работеща демонстрация тук

Или можете да опитате тази заявка, ако искате 3-ти ред да има достъп до дата на 4-ти ред

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;

Можете да видите работеща демонстрация тук




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO + MySQL винаги връща низове, но какво да кажем за MsSQL?

  2. Вземете ранг, базиран на резултат, от неподредена MySql база данни, когато е дадено потребителско име

  3. Изберете дубликати от един ред?

  4. Прави влизането по-сигурно

  5. влизане като потребител или администратор от 2 различни таблици