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

MySQL 5.7同表左外连接:如何筛选符合特定flag规则的数据

使用同表左外连接实现需求的MySQL查询语句

嘿,这需求用同表左外连接就能完美实现,我来给你一步步说明怎么写:

首先明确核心思路:我们需要把mytable和它自己做左外连接,一边找所有flag=0的行,另一边匹配相同title且flag=1的行,最后只保留那些没有匹配到对应flag=1行的flag=0记录。

对应的SQL语句如下:

SELECT t1.title, t1.flag
FROM mytable t1
LEFT JOIN mytable t2 
  ON t1.title = t2.title 
  AND t2.flag = 1
WHERE t1.flag = 0
  AND t2.title IS NULL;

语句拆解说明:

  • 给表起两个别名t1和t2,相当于把同一张表当成两张独立的数据集来操作
  • t1作为主数据集,先通过WHERE t1.flag = 0筛选出所有flag为0的行
  • 左连接t2的条件设置为t1.title = t2.title AND t2.flag = 1,目的是找到每个title对应的flag=1的记录
  • 最后AND t2.title IS NULL是关键:左连接中如果t2没有匹配到数据,所有t2的字段都会是NULL,这就意味着这个title不存在flag=1的行,正是我们需要保留的目标记录

执行这条语句后,就能得到你期望的结果:

titleflag
second0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:41:59