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

MySQL中如何用WHERE子句筛选Round 1出现过的ID的所有行?

解决方案:筛选出Round 1中出现过的ID的所有行

别担心术语使用的问题,新手刚开始接触SQL都有这个过程~针对你的需求,我给你两种MySQL里实用的实现方法,都能精准得到你想要的结果:

方法一:使用IN子查询

这是最直观的写法,先找出所有在Round=1里出现过的ID,再筛选所有包含这些ID的行:

SELECT *
FROM your_table_name
WHERE ID IN (
    -- 先获取Round=1的所有唯一ID
    SELECT DISTINCT ID
    FROM your_table_name
    WHERE Round = 1
);

解释:

  • 内层的子查询SELECT DISTINCT ID ... WHERE Round = 1会返回所有在Round1中出现过的ID(你的例子里就是1和4),加上DISTINCT是为了避免重复的ID(哪怕你的数据里没有重复,这个操作也能让查询更严谨)。
  • 外层查询通过ID IN (...),把所有ID属于这个集合的行都筛选出来,正好就是你要保留的ID1和4的所有行。

方法二:使用自连接(INNER JOIN)

如果你想尝试另一种思路,可以用表的自连接来实现:

SELECT DISTINCT t1.*
FROM your_table_name t1
INNER JOIN your_table_name t2
ON t1.ID = t2.ID
WHERE t2.Round = 1;

解释:

  • 我们把同一张表分别命名为t1和t2,t2的作用是筛选出Round=1的ID;
  • 通过INNER JOIN让t1和t2的ID匹配,这样t1里就只保留了t2中存在的ID(也就是Round1出现过的ID);
  • 加上DISTINCT是为了避免因为t2里同一个ID重复出现而导致t1的行被重复查询出来。

注意事项

记得把代码里的your_table_name替换成你实际使用的表名哦~两种方法都能达到你的要求,新手推荐先从第一种子查询的写法入手,更容易理解逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:18:10