MySQL在哪里,限制输出

MySQL在哪里,限制输出,mysql,limit,where-in,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 是的,您可以使用变量执行此操作: SELECT * FROM ( SELECT *,

所以我有一个类似的问题

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

是的,您可以使用变量执行此操作:

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

是的,您可以使用变量执行此操作:

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

如果你害怕MySQL变量,你也可以使用联合查询:


如果你害怕MySQL变量,你也可以使用联合查询:


IN数组是动态生成的,并使用非常大的数据集。此查询可能存在性能瓶颈?那么@Giorgos答案可能就是您要查找的答案。IN数组是动态生成的,并且使用非常大的数据集。此查询可能存在性能瓶颈?那么@Giorgos答案可能就是您要查找的答案。请注意,没有ORDER BY的限制是毫无意义的。请注意,没有ORDER BY的限制是毫无意义的。