सबसे पहले, आपको तीसरे जॉइन की बिल्कुल भी आवश्यकता नहीं है। आप अपनी गणना एक जॉइन में कर सकते हैं:
from (select id
from owner
where date_format(auction_date,'%Y-%m-%d %H:%i:00') = date_format(NOW(),'%Y-%m-%d %H:%i:00')
) as a left join
(select owner_id, max(nb) as maxbid, max(mb) as maxautobi
from auction
group by owner_id
) b
on a.id=b.owner_id;
mb
. के लिए दूसरा सबसे बड़ा मान प्राप्त करना फिर एक ट्रिक का उपयोग करता है, जिसमें substring_index()
. शामिल है और group_concat()
:
from (select id
from owner
where date_format(auction_date,'%Y-%m-%d %H:%i:00') = date_format(NOW(),'%Y-%m-%d %H:%i:00')
) as a left join
(select owner_id, max(nb) as maxbid, max(mb) as maxautobi,
substring_index(substring_index(group_concat(mb order by mb desc), ',', 2), ',', -1
) as second_mb
from auction
group by owner_id
) b
on a.id=b.owner_id;
विचार mb
. द्वारा क्रम में मानों को एक साथ जोड़ना है . फिर सूची का दूसरा तत्व लें। एक नकारात्मक पहलू यह है कि मान को एक वर्ण स्ट्रिंग में बदल दिया जाता है, भले ही वह एक संख्या के रूप में शुरू हो।