sql >> Databasteknik >  >> RDS >> Mysql

SQL Hämta X senaste poster från en "anpassad" post_type som räknar användarnas individuella antal anpassade post_type

Prova detta;)

Fråga 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

Kolla denna SqlFiddle Resultat :

|   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 |

Underfråga t2 kommer att få max ID i varje användare när user != '1' and post_type = 'custom' , sedan inner join t1 med t2 på t1.ID = t2.ID and t1.user = t2.user får oss post som har max ID av varje user i tabellen post . Som:"2783", "2759", "2757", "2683", "2681", "2652", "2630", "2617", "2596", "2215".

Och sist med order by och limit , naturligtvis kan du få "2783", "2759", "2757", "2683". Hoppas jag inte misstog din fråga.



  1. Hur roterar man PgBouncer-loggar i Linux/Windows?

  2. Gruppera DateTime i 5,15,30 och 60 minuters intervall

  3. Hur kontrollerar man om MySQL-tabellen är UTF-8 och har storageEngine InnoDB?

  4. MySQL GROUP_CONCAT med nollor