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

MySQL如何重复返回IN子句中多次出现条件的单行数据?

解决方案

方法1:使用UNION ALL拼接多次查询

直接把相同的查询用UNION ALL连接,因为UNION ALL不会对结果去重,所以会返回两次匹配的数据:

SELECT name FROM people WHERE age = '34'
UNION ALL
SELECT name FROM people WHERE age = '34';

方法2:JOIN包含重复值的临时数据集

构造一个包含重复目标值的临时表,通过JOIN关联原表,让匹配的行和临时表的每一行对应,从而得到重复结果:

SELECT p.name
FROM people p
JOIN (VALUES ('34'), ('34')) AS ages(val)
ON p.age = ages.val;

如果需要更多重复次数,只需在VALUES里添加更多的('34')即可。

方法3:利用序列生成函数(部分数据库支持)

像PostgreSQL、SQL Server这类支持序列生成函数的数据库,可以用GENERATE_SERIES(PostgreSQL)或类似方式生成重复行,再和原表交叉连接:

-- PostgreSQL示例
SELECT p.name
FROM people p
CROSS JOIN GENERATE_SERIES(1, 2)
WHERE p.age = '34';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:05:59