MySQL技术问询:求基于三列筛选行求和等于指定值的高效查询
解决方案:筛选三列求和等于指定值的MySQL查询
没问题!这其实是个很常见的需求,用MySQL的WHERE子句直接计算三列的和就能轻松实现,语句简洁又高效。
基础查询语句(无NULL值场景)
假设你的表名为your_table,需要计算的三列是col1、col2、col3,目标求和值是target_value,可以用下面的语句:
SELECT * FROM your_table WHERE (col1 + col2 + col3) = target_value;
处理包含NULL值的场景
如果你的列中可能存在NULL值(因为NULL和任何数值相加结果都是NULL,会导致符合条件的记录被漏掉),可以用COALESCE()函数把NULL转换为0,确保求和准确:
SELECT * FROM your_table WHERE (COALESCE(col1, 0) + COALESCE(col2, 0) + COALESCE(col3, 0)) = target_value;
实际示例
举个具体的例子,假设你有一张order_items表,三列分别是item1_qty、item2_qty、item3_qty,想要筛选出这三列数量总和等于15的订单记录:
SELECT * FROM order_items WHERE (item1_qty + item2_qty + item3_qty) = 15;
如果这三列里可能有NULL(比如某些订单只买了其中两种商品),就用带COALESCE的版本:
SELECT * FROM order_items WHERE (COALESCE(item1_qty, 0) + COALESCE(item2_qty, 0) + COALESCE(item3_qty, 0)) = 15;
内容的提问来源于stack exchange,提问作者nomeepk
相关产品推荐
相关产品推荐

