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

基于FilterSub_ID点击事件动态生成SQL查询实现产品列表展示

动态生成基于FilterSub_ID点击的产品列表SQL查询

需求背景

根据用户在过滤器中对FilterSub_ID(隶属于all_filters表)的点击操作,动态调整SQL查询语句,以此展示匹配条件的产品列表。


现有数据表结构

数据表名字段名说明
dbo.Cat_MainCat_Main_ID主分类ID(主键)
Cat_Main_name主分类名称
dbo.Cat_SubCat_Sub_ID子分类ID(主键)
Cat_Main_ID关联主分类的外键
dbo.FiltersMainFilterMain_ID过滤器主项ID(主键)
FilterMain_Name过滤器主项名称
dbo.FiltersSubFilterSub_ID过滤器子项ID(主键)
FilterMain_ID关联过滤器主项的外键

动态SQL实现思路

这里假设你有一个存储产品信息的表dbo.Products(如果表名/字段不同,自行替换),核心逻辑是捕获用户点击的FilterSub_ID集合,然后关联所有相关表生成查询:

  • 第一步:捕获用户点击的FilterSub_ID,支持单个或多个选择(多选场景更常见)
  • 第二步:通过关联过滤器表、分类表和产品表,筛选出匹配条件的产品
  • 第三步:避免SQL注入风险,优先使用安全的参数化查询方式

示例代码

方式1:字符串拼接(适合简单场景,注意注入风险)

-- 模拟用户点击的FilterSub_ID集合,实际开发中替换为前端传入的参数
DECLARE @SelectedFilterSubIDs VARCHAR(MAX) = '2,4,6'
DECLARE @DynamicSQL NVARCHAR(MAX)

SET @DynamicSQL = N'
SELECT p.Product_ID, p.Product_Name, p.Price -- 替换为你需要展示的产品字段
FROM dbo.Products p
-- 关联分类表,根据你的产品表关联逻辑调整
JOIN dbo.Cat_Sub cs ON p.Cat_Sub_ID = cs.Cat_Sub_ID
JOIN dbo.Cat_Main cm ON cs.Cat_Main_ID = cm.Cat_Main_ID
-- 关联过滤器表,这里假设过滤器子项和主分类关联,根据实际业务调整关联条件
JOIN dbo.FiltersSub fs ON fs.FilterMain_ID = /* 这里填写过滤器和分类/产品的关联逻辑,比如cm.Cat_Main_ID对应的过滤器主项ID */
WHERE fs.FilterSub_ID IN (' + @SelectedFilterSubIDs + ')
'

-- 执行动态SQL
EXEC sp_executesql @DynamicSQL

方式2:表值参数(推荐,完全避免SQL注入)

-- 先定义一个表值参数类型(只需创建一次)
CREATE TYPE FilterSubIDList AS TABLE (FilterSub_ID INT)

-- 模拟用户选择的FilterSub_ID
DECLARE @SelectedIDs FilterSubIDList
INSERT INTO @SelectedIDs VALUES (2), (4), (6)

-- 安全的参数化查询
SELECT p.Product_ID, p.Product_Name, p.Price
FROM dbo.Products p
JOIN dbo.Cat_Sub cs ON p.Cat_Sub_ID = cs.Cat_Sub_ID
JOIN dbo.Cat_Main cm ON cs.Cat_Main_ID = cm.Cat_Main_ID
JOIN dbo.FiltersSub fs ON /* 填写实际关联条件 */
-- 通过表值参数筛选
JOIN @SelectedIDs s ON fs.FilterSub_ID = s.FilterSub_ID

注意事项

  • 请根据你的实际业务逻辑调整表之间的关联条件(比如过滤器子项是直接关联产品,还是关联分类)
  • 如果用户没有选择任何过滤器,可以默认返回全部产品,只需在SQL中添加判断逻辑即可
  • 生产环境中强烈推荐使用表值参数或参数化查询,避免SQL注入攻击

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:00:08