Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MYSQL में दूसरा MAXIMUM DATE कैसे प्राप्त करें?

आपकी क्वेरी को पढ़कर मज़ा नहीं आया, लेकिन मुझे लगता है कि समस्या यहाँ है:

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
)

यदि आप प्रत्येक क्लाइंट के लिए अधिकतम तिथि चाहते हैं तो आपको क्लाइंट_आईडी के अनुसार ग्रुप करना होगा:

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

तीसरी समस्या, आप लेफ्ट जॉइन का उपयोग कर रहे हैं जिसका अर्थ है कि आप 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. एक कॉलम को छोड़कर एसक्यूएल में सभी कॉलम कैसे चुनें?

  2. विदेशी कुंजी के रूप में समग्र प्राथमिक कुंजी का प्रयोग करें

  3. Mysql int(11) संख्या सीमा से बाहर है

  4. MySQL:लगातार महीनों के साथ रिकॉर्ड की संख्या

  5. mysql_real_escape_string और array_map रिक्त तार लौटाता है?