2016-06-14 12 views
1

So habe ich eine Abfrage wieMySQL Wo IN, Grenzausgabe

SELECT * FROM table WHERE id IN (1,2,3) LIMIT 10 

Ist es möglich, die Anzahl der Ausgabe für jedes der Elemente in einem Array wie

SELECT * FROM table WHERE id 1 LIMIT 10 
SELECT * FROM table WHERE id 2 LIMIT 10 
SELECT * FROM table WHERE id 3 LIMIT 10 
+1

Beachten Sie, dass LIMIT ohne ORDER BY ziemlich bedeutungslos ist. – Strawberry

Antwort

4

Ja zu begrenzen, können Sie tun es mit Variablen:

SELECT * 
FROM (
    SELECT *, 
     @seq := IF(id = @id, @seq + 1, 
        IF(@id := id, 1, 1)) AS seq 
    FROM table 
    CROSS JOIN (SELECT @seq := 0, @id := 0) AS vars 
    WHERE id IN (1,2,3) 
    ORDER BY id) AS t 
WHERE t.seq <= 10 
+0

perfekt. danke –

3

Wenn Sie MySQL Variablen Angst haben (ich bin), können Sie auch eine UNION qu verwenden ery:

(SELECT * FROM table WHERE id = 1 LIMIT 10) 
UNION ALL 
(SELECT * FROM table WHERE id = 2 LIMIT 10) 
UNION ALL 
(SELECT * FROM table WHERE id = 3 LIMIT 10) 
+0

das IN-Array ist dynamisch generiert und arbeitet mit sehr großen Datenmengen. Diese Abfrage hätte einen Leistungsengpass? –

+0

Dann könnte die @ Giorgos Antwort das sein, wonach Sie suchen. –