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

如何用SELECT语句筛选Text含非自身姓名的COMMENTS表记录?

实现方案

完全可以通过SELECT语句实现这个需求,以下是两种实用的写法:

方法一:使用EXISTS子查询(推荐)

这种方式逻辑清晰,性能也比较好,适合大多数场景:

SELECT c.*
FROM COMMENTS c
WHERE EXISTS (
    SELECT 1
    FROM NAMES n
    WHERE n.`First Name` != c.`First Name`
      AND c.Text LIKE CONCAT('%', n.`First Name`, '%')
);

逻辑说明

遍历COMMENTS表的每一行,子查询会检查NAMES表中是否存在不等于当前行First Name的姓名,且该姓名出现在当前行的Text字段里。只要存在符合条件的姓名,就会返回这行COMMENTS数据。

方法二:去重优化版(针对NAMES表有大量重复的情况)

如果NAMES表重复姓名很多,可以给子查询加DISTINCT减少重复判断,提升性能:

SELECT c.*
FROM COMMENTS c
WHERE EXISTS (
    SELECT DISTINCT n.`First Name`
    FROM NAMES n
    WHERE n.`First Name` != c.`First Name`
      AND c.Text LIKE CONCAT('%', n.`First Name`, '%')
);

注意事项

如果你的姓名里包含%、_这类LIKE语句的特殊通配符,需要用ESCAPE子句转义,比如:

AND c.Text LIKE CONCAT('%', REPLACE(REPLACE(n.`First Name`, '%', '\%'), '_', '\_'), '%') ESCAPE '\'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:31:02