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

Как да получите втора МАКСИМАЛНА ДАТА в MYSQL

Не беше забавно да прочета вашето запитване, но мисля, че проблемът е тук:

LEFT JOIN (
  SELECT max(notification_date) notification_date, client_id
  FROM og_ratings
  WHERE notification_date NOT IN (
    SELECT max(notification_date)
    FROM og_ratings
)

ако искате максималната дата за всеки клиент, трябва да ГРУПИРАТЕ ПО client_id:

SELECT client_id, max(notification_date) notification_date
FROM og_ratings
GROUP BY client_id

ако искате втория максимум, има няколко опции, аз използвам тази, която е по-лесна за разбиране, но не е непременно най-ефективната:

SELECT client_id, max(notification_date) notification_date
FROM og_ratings
WHERE
  (client_id, notification_date) NOT IN (
    SELECT client_id, max(notification_date)
    FROM og_ratings GROUP BY client_id
  )
GROUP BY client_id

трети проблем, вие използвате LEFT JOIN, което означава, че ще върнете всички стойности от og_ratings, независимо дали са вторият максимум или не. Използвайте INNER JOIN в този контекст:

SELECT
  r.client_id,
  c.id,
  t.id,
  ..etc...
FROM
  og_ratings r INNER JOIN (
    SELECT client_id, max(notification_date) notification_2nd_date
    FROM og_ratings
    WHERE
      (client_id, notification_date) NOT IN (
        SELECT client_id, max(notification_date)
        FROM og_ratings GROUP BY client_id
      )
    GROUP BY client_id
   ) r2
  ON r.notification_date = r2.notification_2nd_date
     AND r.client_id = r2.client_id
  LEFT JOIN og_companies c ON r.client_id = c.id
  LEFT JOIN og_rating_types t ON r.rating_type_id = t.id
  LEFT JOIN og_actions a ON r.pacra_action = a.id
  LEFT JOIN og_outlooks o ON r.pacra_outlook = o.id
  LEFT JOIN og_lterms l ON r.pacra_lterm = l.id
  LEFT JOIN og_sterms s ON r.pacra_sterm = s.id
  LEFT JOIN pacra_client_opinion_relations pr ON pr.opinion_id = c.id
  LEFT JOIN pacra_clients pc ON pc.id = pr.client_id
  LEFT JOIN city ON city.id = pc.head_office_id
WHERE
  r.client_id IN (
    SELECT opinion_id FROM pacra_client_opinion_relations
    WHERE client_id = 50
  )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проблеми с mysqldump с грешка при възстановяване:'Моля, ИЗХВЪРЛЕТЕ пространството за таблици преди ИМПОРТИРАНЕ'

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

  3. Намиране на всички родители в таблицата на mysql с единична заявка (рекурсивна заявка)

  4. Показва се � вместо £

  5. Как да вмъкна колони на конкретна позиция в съществуваща таблица?