修复SQL语句ambiguous identifier标识符歧义报错的改写方法
报错原因
触发ambiguous identifier(标识符不明确)错误的核心原因是多表关联查询时,存在数据库无法唯一判定来源的字段:
users(别名u)和offices(别名o)两张表都包含名为id的字段,查询时直接写id未指定所属表,数据库无法判断需要读取哪张表的id值- 额外问题:SELECT列表中重复写了两次
office_name,属于冗余查询内容,虽然不会直接触发标识符错误,但没有实际查询意义
修正后的SQL
给所有查询字段明确指定所属表的别名,同时删除重复的冗余字段即可解决报错:
SELECT u.user_id, u.firstname, -- 若需要返回用户id则把o.id改成u.id即可,根据实际业务场景调整 o.id AS office_id, o.office_name, u.lastname, u.email FROM users u JOIN offices o ON o.id = u.office_id
多表关联查询时,只要字段在多张关联表中存在重名,就必须给字段加上表名/表别名前缀明确来源,否则就会触发标识符不明确的错误。
内容的提问来源于stack exchange,提问作者Justin Dev
相关产品推荐
相关产品推荐

