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

MySQL查询:根据外键redirect获取指向的目标名称

解决内部外键redirect的名称查询问题

嘿,这个内部外键的查询需求很常见,我来给你捋清楚怎么实现~

首先先明确我们的基础数据,你的表结构和数据如下:

表结构与初始数据

idnameredirect
1anull
2bnull
3cnull
4d1
5e3

需求很明确:已知一个name值,若它对应的redirect不为null,就获取redirect指向的id对应的name;若redirect为null,就返回自身的name。

实现思路

这里最适合用自连接(把表和自己关联起来)的方式来处理:

  • 把原表拆成两个逻辑表:主表t1用来定位输入的name对应的记录,关联表t2用来获取redirect指向的目标记录
  • 用LEFT JOIN保证即使redirect是null,也不会丢失主表的记录,这样就能兼容两种情况

具体查询语句

假设你的表名叫your_table,要查询的name是'd',可以用下面的SQL:

SELECT 
    COALESCE(t2.name, t1.name) AS target_name
FROM 
    your_table t1
LEFT JOIN 
    your_table t2 ON t1.redirect = t2.id
WHERE 
    t1.name = 'd';

关键部分解释

  • COALESCE(t2.name, t1.name):这个函数会返回第一个非null的值。如果redirect有值,t2.name就会存在,返回它;如果redirect是null,就返回t1自己的name,正好符合需求
  • LEFT JOIN your_table t2 ON t1.redirect = t2.id:通过redirect字段和关联表的id关联,拿到指向的目标名称
  • WHERE t1.name = 'd':替换这里的'd'就能查询任意name对应的目标值

测试验证

  • 查询name为'a',返回结果是'a'
  • 查询name为'd',返回结果是'a'
  • 查询name为'e',返回结果是'c'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:30:17