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

SQL:对比表列子集、筛选特定行并获取单表唯一记录

SQL语法修正与需求实现

表结构信息

table_1

Name    Address   Height    Weight
X.        y         z.        p
G.        H.        I         J
Q         W.        E.        R

table_2

Name    Income     Tax    
X.        y         z
A         B         C

需求说明

要从table_1里找出只在table_1存在、table_2不存在的记录,但仅处理table_1中Height不等于I和E的行。

原查询的问题

原SQL报syntax error at or near "WHERE",问题出在:

  • 连续写了两个WHERE子句,不符合SQL语法规范
  • NOT LIKE ANY的数组拼接写法错误,而且这里Height是精确匹配场景,不需要模糊查询

修正后的SQL代码

1. 返回目标记录的查询

SELECT * 
FROM table_1 
WHERE Height NOT IN ('I', 'E')
  AND NOT EXISTS (
    SELECT 1 
    FROM table_2 
    WHERE table_2."Income" = 'y' 
      AND UPPER(table_2."Name") LIKE CONCAT('%', UPPER(table_1."Name"), '%')
  )

执行结果:

Name    Address   Height    Weight
X.        y         z.        p

2. 统计符合条件的记录数

SELECT COUNT(DISTINCT "Name") 
FROM table_1 
WHERE Height NOT IN ('I', 'E')
  AND NOT EXISTS (
    SELECT 1 
    FROM table_2 
    WHERE table_2."Income" = 'y' 
      AND UPPER(table_2."Name") LIKE CONCAT('%', UPPER(table_1."Name"), '%')
  )

执行结果为1。

核心修正点

  • 把两个WHERE合并成一个,用AND连接多条件
  • 用NOT IN ('I', 'E')替代错误的模糊匹配写法,更贴合精确排除Height为I、E行的需求
  • 子查询改用SELECT 1,比选具体字段更高效,逻辑不受影响

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:04:58