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

通过外键关联多表查询实现单条返回用户投票颜色的SQL问题

问题原因

你现有SQL返回3条记录的核心原因是,使用OR条件关联Colors表时,每一个vote字段匹配到颜色都会生成一条独立的行数据,1条投票记录自然会返回3条结果。

解决方案

将Colors表分别关联三次,每次对应一个投票字段,就能把三次投票的颜色放到同一条记录的不同列中,修改后的SQL如下:

SELECT 
    v.id AS 投票ID,
    u.name AS 用户名,
    c1.name AS 第一次投票颜色,
    c2.name AS 第二次投票颜色,
    c3.name AS 第三次投票颜色
FROM votes v
INNER JOIN users u ON v.user = u.id
LEFT JOIN colors c1 ON v.vote_01 = c1.id
LEFT JOIN colors c2 ON v.vote_02 = c2.id
LEFT JOIN colors c3 ON v.vote_03 = c3.id

说明

  • 这里给Colors表设置了三个不同的别名c1/c2/c3,分别和vote_01/vote_02/vote_03做一对一关联,不会生成多余的行
  • 用LEFT JOIN是为了避免某一个投票字段为空时,整条记录被过滤,如果你能保证三个投票字段都有有效值,换成INNER JOIN也可以

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:57:01