2016-09-07 5 views
-1

Okay, können so sagen, ichMysql Limit 2 Zeilen pro Tag pro Benutzer

id 
user_id 
created_at 

Und einige Daten

id user_id created_at 
1  1  2016-09-06 
2  1  2016-09-06 
3  1  2016-09-06 
4  1  2016-09-07 
5  1  2016-09-08 
6  1  2016-09-08 
7  1  2016-09-08 

Was ich will achive haben

Sache eine einfache Tabelle ist Wählen Sie maximal zwei Zeilen pro USER pro DATE von created_at. Ich zeige nur Daten von einem Benutzer an, aber ich hoffe, dass Sie den Punkt verstehen.

So die Ergebnisse der Auswahl sollte

id user_id created_at 
1  1  2016-09-06 
2  1  2016-09-06 
4  1  2016-09-07 
5  1  2016-09-08 
6  1  2016-09-08 

sein Ich weiß, ich muss irgendwie verwenden, um die LIMIT Schlüsselwort, aber ich bin nicht so sicher, wie. Ich bin mir auch ziemlich sicher, dass ich eine Unterabfrage und eine Gruppe nach dem Datum verwenden muss.

Ich hoffe, Sie verstehen das Problem und bitte stellen Sie einige Fragen, wenn es etwas schwierig zu verstehen ist.

Antwort

1

Eine Möglichkeit ist, Variablen zu verwenden:

SELECT id, user_id, created_at 
FROM (
    SELECT id, user_id, created_at, 
     @rn := IF(@dt = created_at, @rn + 1, 
        IF(@dt := created_at, 1, 1)) AS rn 
    FROM mytable 
    CROSS JOIN (SELECT @rn := 0, @dt := '1900-01-01') AS var 
    ORDER BY created_at) AS t 
WHERE t.rn <= 2 

Demo here