SELECT c.*, p.*
FROM clients AS c
JOIN programs AS p
ON p.id =
(
SELECT pi.id
FROM programs AS pi
WHERE pi.client_id = c.id
ORDER BY
pi.close_date=0 DESC, pi.close_date DESC
LIMIT 1
)
Thanx को @Quassnoi पर जाना चाहिए . एक समान (लेकिन अधिक जटिल) प्रश्न में उसका उत्तर देखें:mysql-समूह-दर-प्रदर्शन-नवीनतम-परिणाम
अगर आप programs
को अपडेट करते हैं तालिका और सेट करें close_date
सभी रिकॉर्ड के लिए कि यह शून्य से close_date='9999-12-31'
. है , फिर आपका ORDER BY
आसान होगा (और उचित इंडेक्स के साथ पूरी क्वेरी तेज):
ORDER BY
pi.close_date DESC