所以我有一个像
这样的查询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
答案 0 :(得分: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
答案 1 :(得分:3)
如果你害怕MySQL变量(我是),你也可以使用UNION
查询:
(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)