如何实现多表关联场景下的SUM求和查询操作
你原来的写法会报错,核心原因是LIKE后只能跟单个匹配值,如果子查询SELECT colum2 FROM table2 WHERE condition2 LIKE 'value2'返回多条结果,SQL会直接抛出「子查询返回多行」的错误。根据你的实际匹配逻辑,可以选择以下两种正确写法:
场景1:colum1和colum2为精确匹配
如果你的需求是colum1的值等于colum2的值,直接用IN替换LIKE即可:
SELECT SUM(qty) AS total_qty FROM table1 WHERE colum1 IN ( SELECT colum2 FROM table2 WHERE condition2 = 'value2' -- 若需模糊匹配condition2可改回LIKE并补充通配符 );
提示:如果condition2是精确匹配'value2',用=代替LIKE查询效率更高,需要模糊匹配请自行补充通配符,比如condition2 LIKE '%value2%'
场景2:colum1需要模糊匹配colum2的值
如果colum2存储的是带通配符的匹配规则(比如%XX%这种格式),需要用关联查询实现多规则匹配:
SELECT SUM(t1.qty) AS total_qty FROM table1 t1 INNER JOIN table2 t2 ON t1.colum1 LIKE t2.colum2 WHERE t2.condition2 LIKE 'value2';
提示:如果需要排除重复匹配的记录,可以在求和前加DISTINCT或者先对table2的colum2去重
内容的提问来源于stack exchange,提问作者momalone
相关产品推荐
相关产品推荐

