我有以下SQL,它会抛出错误的模糊列名'id'
select tbl_registration.*, tbl_ebp.name as ebp_name, tbl_Users.id as user_id, tbl_ebp.id as linked_ebp_id
from tbl_registration
left outer join tbl_ebp on tbl_ebp.id = tbl_registration.ebp_id
left outer join tbl_users on tbl_registration.email = tbl_users.username
where id = [PARAM]p_id
我已经阅读了一些关于此的文章,但找不到我的代码的可行解决方案。 任何帮助非常感谢。
答案 0 :(得分:21)
您的WHERE子句ID需要更具体,包括表名:
WHERE table.id = [PARAM]p_id
如果两个东西共享相同的名称,那么这就是歧义的步骤。在这种情况下,SQL中的多个表包含“id”列。
如果列名在被触摸的当前表集中是唯一的,则SQL具有消除列名称歧义的智能 - 因此大多数情况下您不需要使用表名为列名添加前缀。
答案 1 :(得分:6)
很可能多个表都有一个名为id的列;在where子句
中使用表前缀答案 2 :(得分:4)
您是否尝试在where子句中添加id列名前缀?
答案 3 :(得分:2)
它指的是where子句中的“id”。您需要指定应过滤哪个表的“id”。
答案 4 :(得分:0)
我已经替换了您的代码
select *, tbl_ebp.name as ebp_name, tbl_Users.id as user_id, tbl_ebp.id as linked_ebp_id
from tbl_registration
left outer join tbl_ebp on tbl_ebp.id = tbl_registration.ebp_id
left outer join tbl_users on tbl_registration.email = tbl_users.username
where your_respective_tblname.id = your_respective_tblname.[PARAM]p_id