SQLite两表关联查询:按名称匹配并排除部分字符串匹配行问题
错误原因分析
- 逻辑运算符使用错误:过滤多个排除项时应使用
AND而非OR。你的原条件Names NOT LIKE '%Gregg%' OR NOT LIKE '%Kim%'会导致所有行都满足条件:比如名称为Gregg时,虽然不满足第一个排除条件,但满足「不是Kim」的第二个条件,最终整行被保留,过滤完全失效。 - 条件字段缺失:
OR后的NOT LIKE没有指定判断字段Names,语法不规范导致逻辑判断完全错误。 - 字段归属不明确:两张表都存在
Names字段,直接写Names会导致数据库无法识别取哪张表的字段,即使运行也会出现不符合预期的结果。
正确SQL写法
你当前的需求是按Names关联两张表,使用内连接即可,过滤条件指定其中一张表的Names字段判断即可,正确语句如下:
SELECT SUM(A.Sales) AS 'A Sales Sum', SUM(B.SALES) AS 'B Sales Sum' FROM A JOIN B ON A.Names = B.Names WHERE A.Names NOT LIKE '%Gregg%' AND A.Names NOT LIKE '%Kim%';
执行后得到的结果就是你预期的A Sales Sum=18,B Sales Sum=24。
内容的提问来源于stack exchange,提问作者carlb710
相关产品推荐
相关产品推荐

