You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用带重复值的数组进行SQL IN查询时如何实现重复计数

问题原因

IN 运算符仅做存在性判断,无论列表内同一个值出现多少次,符合条件的原表行只会被匹配一次,因此COUNT统计结果不会关联IN列表内的重复次数。

实现方案

将需要匹配的列表构造为临时行集,和原表做内连接即可实现重复匹配计数:

  • 支持VALUES行构造器的数据库(PostgreSQL、MySQL 8.0+、SQL Server 等)可直接用如下写法:
SELECT b.id_exo, COUNT(b.id_exo) 
FROM (VALUES (10), (10)) AS t(id_seance)
INNER JOIN BLOC b ON b.id_seance = t.id_seance
GROUP BY b.id_exo;
  • 低版本MySQL等不支持VALUES行构造的场景,可以用UNION ALL构造临时行集:
SELECT b.id_exo, COUNT(b.id_exo) 
FROM (
    SELECT 10 AS id_seance
    UNION ALL
    SELECT 10 AS id_seance
) AS t
INNER JOIN BLOC b ON b.id_seance = t.id_seance
GROUP BY b.id_exo;
效果说明

临时行集会保留列表内的重复值,连接时每一个重复的匹配项都会和原表符合条件的行关联一次,最终统计出来的COUNT结果就会和列表内的重复次数对应。

内容的提问来源于stack exchange,提问作者Yann92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:33:03