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

SQL反向查询产品关联折扣:获取ID为2的产品适用折扣

搞定单个产品的对应折扣查询

嘿,我来帮你解决这个问题!要获取ID为2的产品适用的折扣,核心是把products和discounts两张表关联起来,通过模糊匹配找到符合条件的折扣项。这里给你两种实用的实现方式:

方式一:JOIN关联查询(推荐)

这是最常用的写法,用LEFT JOIN可以同时覆盖“有折扣”和“无折扣”的场景:

SELECT 
    p.ID AS 产品ID,
    p.Name AS 产品名称,
    d.Name AS 折扣名称,
    d.Percentage AS 折扣率
FROM 
    Products p
LEFT JOIN 
    Discounts d ON p.Name LIKE CONCAT('%', d.`Product Name Search Param`, '%')
WHERE 
    p.ID = 2;

小细节说明:

  • CONCAT('%', d.Product Name Search Param, '%')是为了动态拼接模糊匹配的通配符,自动适配折扣表里的搜索参数
  • 如果这个产品没有匹配到任何折扣,折扣名称和折扣率会显示NULL,一眼就能看出来有没有折扣
  • 要是你只关心有折扣的结果,把LEFT JOIN换成INNER JOIN就行

方式二:子查询写法

如果你更喜欢子查询的风格,也可以这么写:

SELECT 
    Name AS 折扣名称,
    Percentage AS 折扣率
FROM 
    Discounts
WHERE 
    EXISTS (
        SELECT 1 
        FROM Products 
        WHERE ID = 2 
          AND Name LIKE CONCAT('%', `Product Name Search Param`, '%')
    );

说明:

  • 这个查询会直接返回ID为2的产品所有符合条件的折扣(要是有多个匹配的话也能全列出来)
  • 要是没有适用折扣,结果集就是空的

针对你的现有数据,ID为2的产品是Hat,名称里既不含a也不含b,所以不管用哪种写法,都会返回空结果(或者LEFT JOIN版本返回NULL),这完全符合你设定的规则哦。

内容的提问来源于stack exchange,提问作者Bálint Bakos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:56:19