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

如何通过颜色名称判断产品是否为红/绿/蓝并返回Y/N?

基于颜色名称的SQL查询实现

核心思路

通过关联产品表t1和颜色表t2,直接使用t2.Color字段判断是否属于Red/Green/Blue,用条件语句生成Is_RGB字段。


标准SQL写法(适配多数数据库)

适用于MySQL、PostgreSQL、SQL Server等绝大多数数据库:

SELECT 
    t1.Id,
    t1.ProductName,
    t2.Color,
    CASE 
        WHEN t2.Color IN ('Red', 'Green', 'Blue') THEN 'Y'
        ELSE 'N'
    END AS Is_RGB
FROM t1
JOIN t2 ON t1.ColorID = t2.Id;

大小写不敏感场景处理

如果颜色名称存在大小写不一致(如red/RED),可以用大小写转换函数统一判断:

SELECT 
    t1.Id,
    t1.ProductName,
    t2.Color,
    CASE 
        WHEN LOWER(t2.Color) IN ('red', 'green', 'blue') THEN 'Y'
        ELSE 'N'
    END AS Is_RGB
FROM t1
JOIN t2 ON t1.ColorID = t2.Id;

简化写法(针对特定数据库)

  • MySQL:使用IF函数简化条件判断
SELECT 
    t1.Id,
    t1.ProductName,
    t2.Color,
    IF(t2.Color IN ('Red', 'Green', 'Blue'), 'Y', 'N') AS Is_RGB
FROM t1
JOIN t2 ON t1.ColorID = t2.Id;
  • SQL Server:使用IIF函数简化
SELECT 
    t1.Id,
    t1.ProductName,
    t2.Color,
    IIF(t2.Color IN ('Red', 'Green', 'Blue'), 'Y', 'N') AS Is_RGB
FROM t1
JOIN t2 ON t1.ColorID = t2.Id;

处理无对应颜色的产品

如果存在ColorID为空或无匹配的情况,改用LEFT JOIN并处理空值:

SELECT 
    t1.Id,
    t1.ProductName,
    COALESCE(t2.Color, '无颜色') AS Color,
    CASE 
        WHEN t2.Color IN ('Red', 'Green', 'Blue') THEN 'Y'
        ELSE 'N'
    END AS Is_RGB
FROM t1
LEFT JOIN t2 ON t1.ColorID = t2.Id;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:50:15