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

如何编写SQL查询匹配(name, color)对集合的Person表数据?

匹配(name, color)对的SQL查询方案

核心思路

把需要匹配的(name, color)对构造为临时数据集,通过关联Person表和Color表,筛选出姓名匹配且拥有对应颜色的人员记录,最后去重避免重复返回。

通用SQL实现(支持VALUES子句的数据库:MySQL 8+/PostgreSQL/SQL Server等)

SELECT DISTINCT p.ID, p.Name
FROM Person p
JOIN Color c ON p.ID = c.PersonID
JOIN (
    -- 替换成你实际需要匹配的(name, color)列表
    VALUES 
        ('Alice', 'Red'),
        ('Bob', 'Green'),
        ('Cindy', 'Brown')
) AS matches(name, color)
    ON p.Name = matches.name AND c.Color = matches.color;

兼容老版本数据库的实现(比如MySQL 5.x)

如果数据库不支持VALUES子句,可以用UNION ALL构造临时数据集:

SELECT DISTINCT p.ID, p.Name
FROM Person p
JOIN Color c ON p.ID = c.PersonID
JOIN (
    SELECT 'Alice' AS name, 'Red' AS color
    UNION ALL
    SELECT 'Bob' AS name, 'Green' AS color
    UNION ALL
    SELECT 'Cindy' AS name, 'Brown' AS color
) AS matches
    ON p.Name = matches.name AND c.Color = matches.color;

效果说明

针对题目中的示例输入,上述查询会返回:

IDName
1Alice
2Bob

不存在的Cindy会被自动过滤,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:34:53