इसे आज़माएं;)
क्वेरी 1 :
select t1.*, t2.userCnt
from `posts` t1
inner join (
select max(`ID`) as `ID`, `user`, count(1) as userCnt
from `posts`
where `user` != '1'
and `post_type` = 'custom'
group by `user`
) t2 on t1.`ID` = t2.`ID` and t1.`user` = t2.`user`
order by t1.`ID` desc limit 4
इस SqlFiddle को जांचें परिणाम :
| ID | user | Date | title | status | post_type | userCnt |
|------|------|---------------------|-------|-----------|-----------|---------|
| 2783 | 5 | 2016-05-24 11:24:08 | Title | published | custom | 2 |
| 2759 | 3 | 2016-05-07 14:00:22 | Title | published | custom | 3 |
| 2757 | 12 | 2016-05-02 12:41:00 | Title | published | custom | 2 |
| 2683 | 15 | 2016-04-22 20:27:45 | Title | published | custom | 2 |
सबक्वेरी t2
अधिकतम ID
मिलेगा प्रत्येक उपयोगकर्ता में जब user != '1' and post_type = 'custom'
, फिर inner join
t1 के साथ t2 पर t1.ID = t2.ID and t1.user = t2.user
हमें रिकॉर्ड मिलेगा जिसमें अधिकतम ID
है प्रत्येक user
. द्वारा तालिका में post
. जैसे:"2783", "2759", "2757", "2683", "2681", "2652", "2630", "2617", "2596", "2215"।
और अंत में order by
और limit
, निश्चित रूप से आप "2783", "2759", "2757", "2683" प्राप्त कर सकते हैं। आशा है कि मैंने आपके प्रश्न में गलती नहीं की।