不明确的列名

时间:2010-07-12 16:01:31

标签: sql

我有以下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

我已经阅读了一些关于此的文章,但找不到我的代码的可行解决方案。 任何帮助非常感谢。

5 个答案:

答案 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