【问题标题】:MySQL Where IN, limit outputMySQL Where IN,限制输出
【发布时间】:2016-10-14 20:39:18
【问题描述】:

所以我有一个类似的查询

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

【问题讨论】:

  • 请注意,没有 ORDER BY 的 LIMIT 是毫无意义的。

标签: mysql limit where-in


【解决方案1】:

如果您害怕 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)

【讨论】:

  • IN 数组是动态生成的,可以处理非常大的数据集。这个查询会有性能瓶颈吗?
  • 那么@Giorgos 的答案可能就是您想要的。
【解决方案2】:

是的,您可以使用变量来做到这一点:

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

【讨论】:

    猜你喜欢
    • 2010-11-07
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 2013-02-08
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多