Die Abfrage wie folgt aussehen könnte:
Haupt Abfrage:
SELECT
t.userID,
t.postID
FROM
(
SELECT
user.id AS userID,
post.id AS postID,
IF (@prev = post.user_id ,@cn := @cn + 1 ,@cn := 0) SL,
@prev := post.user_id
FROM (SELECT @cn := 0, @prev := 0) var,post
INNER JOIN user ON user.id = post.user_id
ORDER BY post.user_id) t
WHERE t.SL < 5;
Die Abfrage wird 5 Beiträge für jeden Benutzer auswählen.
TEST:
Kann keine SQL FIDDLE hinzuzufügen.
Also hier sind einige Testdaten mit Schema, um die Abfrage zu überprüfen.
DROP TABLE IF EXISTS `post`;
CREATE TABLE `post` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `post` VALUES ('1', '71');
INSERT INTO `post` VALUES ('2', '66');
INSERT INTO `post` VALUES ('3', '66');
INSERT INTO `post` VALUES ('4', '71');
INSERT INTO `post` VALUES ('5', '66');
INSERT INTO `post` VALUES ('6', '71');
INSERT INTO `post` VALUES ('7', '71');
INSERT INTO `post` VALUES ('8', '71');
INSERT INTO `post` VALUES ('9', '66');
INSERT INTO `post` VALUES ('10', '66');
INSERT INTO `post` VALUES ('11', '66');
INSERT INTO `post` VALUES ('12', '66');
INSERT INTO `post` VALUES ('13', '71');
INSERT INTO `post` VALUES ('14', '91');
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
);
INSERT INTO `user` VALUES ('66');
INSERT INTO `user` VALUES ('71');
INSERT INTO `user` VALUES ('91');
SELECT
*
FROM post;
Ergebnis:
id user_id
1 71
2 66
3 66
4 71
5 66
6 71
7 71
8 71
9 66
10 66
11 66
12 66
13 71
14 91
SELECT * FROM user;
Ergebnis:
id
66
71
91
Beiträge insgesamt pro Benutzerabfrage:
012.351.
SELECT
user_id,
COUNT(*) totalPost
FROM post
GROUP BY user_id;
Ergebnis:
user_id totalPost
66 7
71 6
91 1
Endergebnis:
userID postID
66 2
66 3
66 5
66 12
66 11
71 1
71 13
71 8
71 7
71 6
91 14
Normalerweise würden Sie, wenn Sie auf Werte in einer Tabelle aussehen wollen und sehen, ob sie in einem anderen existieren Beitreten. Kannst du erklären, was du erreichen willst? Vielleicht geben Sie Beispiele für Ihre Quelldaten und wie die Ausgabe aussehen soll. – Jared
Ich möchte nur 5 Beiträge von jedem Benutzer erhalten –