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

SQL动态筛选需求:优化带OR条件的Customer表查询语句

优化SQL查询以实现动态参数过滤

当前使用的SQL语句

Select * from Customer Where Acc = '26A' and ( OrderNo = '111' OR OrderNo <> ' ')

当前查询返回结果

AccOrder No
26A111
26A112
26A113

原始Customer表数据

AccOrder No
26A111
26A112
26A113
26B114
26B115
26B116

需求说明

需要优化上述查询,实现以下逻辑:

  • 当同时传入Acc编号和OrderNo时,仅返回匹配这两个参数的记录
  • 当未传入OrderNo时,返回该Acc编号下的所有记录

当前查询仅完成了Acc编号的过滤,无法满足上述需求。

优化后的SQL语句

假设使用参数@Acc(传入的Acc编号)和@OrderNo(传入的订单号,未传入时为NULL或空字符串),优化后的查询如下:

SELECT * 
FROM Customer 
WHERE Acc = @Acc 
  AND (OrderNo = @OrderNo OR @OrderNo IS NULL OR @OrderNo = '')

逻辑说明

  1. 先通过Acc = @Acc过滤出指定账户下的所有记录
  2. 针对OrderNo参数做判断:
    • 如果@OrderNo有有效值(非空、非空字符串),则只保留OrderNo匹配该参数的记录
    • 如果@OrderNo为空或空字符串,则不对OrderNo做额外限制,返回该账户下的所有记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 23:32:49