Imagina este escenario basandome en lo que tu expones (Sobre tus 2 tablas usuarios y posts):
mysql> SELECT * FROM usuarios;
+----+--------+
| id | nombre |
+----+--------+
| 1 | pepe |
| 2 | Mario |
| 3 | Maria |
| 4 | Juan |
| 5 | Jose |
+----+--------+
5 ROWS IN SET (0.00 sec)
mysql> SELECT * FROM post;
+------+------+--------------------------+
| id | pid | mensaje |
+------+------+--------------------------+
| 1 | 1 | Me gusta la lluvia |
| 1 | 1 | La vida es bella |
| 1 | 1 | Que pais visitar |
| 2 | 2 | Mi color favorito |
| 1 | 1 | Tu fruta favorita |
| 3 | 3 | Me gustan los viernes |
| 3 | 3 | Dia de mi cumple |
| 1 | 1 | Que computadora comprar? |
| 1 | 1 | Mi laptop rosa |
| 4 | 4 | La manzana roja |
| 4 | 4 | Aprendiendo lotus |
| 4 | 4 | Viva Oracle |
| 4 | 4 | Tu comida preferida |
+------+------+--------------------------+
13 ROWS IN SET (0.00 sec)
Ahora quieres saber cuantos mensajes existen en la tabla post que hayan realizado cada usuario de la tabla usuarios.
mysql> SELECT usuarios.nombre, COUNT(post.pid) FROM post INNER JOIN usu
arios WHERE usuarios.id = post.id GROUP BY usuarios.id;
+--------+-----------------+
| nombre | COUNT(post.pid) |
+--------+-----------------+
| pepe | 6 |
| Mario | 1 |
| Maria | 2 |
| Juan | 4 |
+--------+-----------------+
4 ROWS IN SET (0.00 sec)
Ahora si tu proposito unicamente es saber que usuario es el que ha realizado la mayoria de posts:
mysql> SELECT usuarios.nombre, COUNT(post.pid) FROM post INNER JOIN usuarios whe
re usuarios.id = post.id GROUP BY usuarios.id LIMIT 1;
+--------+-----------------+
| nombre | COUNT(post.pid) |
+--------+-----------------+
| pepe | 6 |
+--------+-----------------+
1 ROW IN SET (0.00 sec)