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

MySQL查询需求:使anon=1的用户记录返回两次

解决方案:MySQL实现特定记录重复提取

这问题我之前处理类似需求时也琢磨过,其实有几种很简洁的实现方式,给你分享两个最常用的:

方法一:UNION ALL 拆分查询

这种方式最直观,思路就是先取出所有用户的名称,再额外取出anon=1的用户名称,两者合并后就会让anon=1的记录重复一次:

SELECT name FROM users
UNION ALL
SELECT name FROM users WHERE anon = 1;

假设原表有3条记录,其中1条anon=1,第一次查询返回3条,第二次查询返回1条,合并后正好是4条,完美符合你的要求。

方法二:JOIN 临时数字表(扩展性更强)

如果以后需要调整重复次数(比如让anon=1的记录出现3次),这种方法改起来更方便:

SELECT u.name
FROM users u
JOIN (SELECT 1 AS num UNION SELECT 2) t
ON u.anon = 0 OR (u.anon = 1 AND t.num <= 2);

原理是创建一个包含两行数据的临时表t,对于anon=0的用户,只关联临时表的任意一行(因为u.anon=0的条件优先满足),所以只出现一次;对于anon=1的用户,会关联临时表的全部两行,自然就重复了一次。如果要重复N次,只要把临时表扩展成N行就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:22:57