MySQL其中IN,限制输出

时间:2016-06-14 08:14:33

标签: mysql limit where-in

所以我有一个像

这样的查询
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

2 个答案:

答案 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)