2016-06-14 57 views
1

所以我有这样的MySQL凡,极限输出

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

查询是否有可能限制输出的数量每个数组元素像

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

请注意,没有ORDER BY的LIMIT是相当无意义的。 – Strawberry

回答

4

是的,你可以做它使用变量:

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

完美。谢谢 –

3

如果你害怕的MySQL变量(我),你也可以使用一个UNION曲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

IN数组是动态生成的并且处理非常大的数据集。这个查询会有性能瓶颈? –

+0

然后@Giorgos的答案可能是你在找什么。 –