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

如何从同一张user表中分别获取普通id与管理员id对应的不同列

这个需求完全可以实现,你之前的两种写法都存在语法或使用场景错误:

  • UNION 要求前后两个查询的列数、对应列的数据类型完全一致,你第一个查询返回9列、第二个返回2列,必然会报错,且UNION是用于合并多个结构一致的结果集,并不符合你“将两个不同结构的查询结果拼接为一行”的场景。
  • 你写的JOIN语法不符合SQL规范,JOIN关联的子查询需要完整结构,你漏写了子查询的FROM关键字,也没有处理关联逻辑。

你可以使用以下两种常用写法实现需求:

写法1:子查询作为固定列

适合场景:仅查询单条指定ID的用户记录,写法简单直接

SELECT 
  a, b, c, d, e, f, g, h, i,
  (SELECT j FROM user WHERE id = '你的管理员ID' LIMIT 1) AS admin_j,
  (SELECT k FROM user WHERE id = '你的管理员ID' LIMIT 1) AS admin_k
FROM user 
WHERE id = '你要查询的指定用户ID';

写法2:交叉连接关联管理员子查询

适合场景:需要查询多条指定ID的用户记录,仅需查询一次管理员信息,性能更优

SELECT 
  normal_user.a, normal_user.b, normal_user.c, normal_user.d, normal_user.e, 
  normal_user.f, normal_user.g, normal_user.h, normal_user.i,
  admin_user.j, admin_user.k
FROM user normal_user
CROSS JOIN (
  SELECT j, k FROM user WHERE id = '你的管理员ID' LIMIT 1
) admin_user
WHERE normal_user.id = '你要查询的指定用户ID';

两种写法最终返回的结果都是1条记录,包含你需要的指定用户9个字段+管理员2个字段,替换SQL中的ID占位符为实际值即可使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:15:05