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

MySQL关联表中如何获取第二个ID?关联查询时第二个ID未显示

嘿,我来帮你搞定这个问题!首先得先指出你这条SQL里的两个关键问题——先把语法错误修正,再解决id显示的问题:

1. 首先修正JOIN条件的语法错误

你原语句里关联categories的条件pkg.cat_id=1=categories.cat_id=1完全不符合MySQL的语法规范,这会导致查询执行失败或者结果不符合预期。正确的做法是先关联pkg和categories的cat_id字段,再筛选cat_id=1的记录,有两种清晰的写法:

  • 把筛选条件放到WHERE子句里(更易读):
    JOIN categories ON pkg.cat_id = categories.cat_id 
    WHERE categories.cat_id = 1
    
  • 或者把筛选条件直接放到ON子句里:
    JOIN categories ON pkg.cat_id = categories.cat_id AND categories.cat_id = 1
    

2. 同时获取两个表的id字段

你查询的pkg和package表都有id字段,当你只写pkg.id时,只会返回pkg表的id,而package表的id根本没被包含在查询结果里。要同时获取两个id,你需要明确指定每个id所属的表,并且最好给它们起别名,避免结果里的字段名重复混淆。

比如把SELECT部分改成:

SELECT 
    package.pkg_name, 
    pkg.cat_id,
    pkg.id AS pkg_id,  -- 给pkg的id起别名,方便识别
    package.id AS package_id  -- 明确选中package的id,同样起别名

完整的修正后SQL

把上面的修改整合起来,最终的SQL应该是这样的:

SELECT 
    package.pkg_name, 
    pkg.cat_id,
    pkg.id AS pkg_id,
    package.id AS package_id
FROM pkg 
INNER JOIN package ON pkg.id = package.id 
JOIN categories ON pkg.cat_id = categories.cat_id 
WHERE categories.cat_id = 1;

执行这条语句后,结果里就会同时显示pkg表的id(别名pkg_id)和package表的id(别名package_id),再也不会出现只有一个id的情况啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:32:41