不明确的列名

Cam*_*ron 8 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
Run Code Online (Sandbox Code Playgroud)

我已经阅读了一些相关的文章,但找不到我的代码的工作解决方案.任何帮助非常感谢.

Ada*_*rth 22

您的WHERE子句id需要更具体,包括表名:

WHERE table.id = [PARAM]p_id
Run Code Online (Sandbox Code Playgroud)

如果两个东西共享相同的名称,那么这就是歧义的步骤.在这种情况下,SQL中的多个表包含"id"列.

如果列名在被触摸的当前表集中是唯一的,则SQL具有消除列名称歧义的智能 - 因此大多数情况下,您不需要使用表名为列名添加前缀.

  • 我个人更喜欢总是指定字段来自哪个表.这使得维护变得更加容易,尤其是在处理连接到十个不同表的复杂报告类型查询时.这样我知道该字段来自哪里,如果它是一个给我一个问题的那个,而不必查找十个不同表的结构来找出它来自哪里. (2认同)

Ste*_*owe 6

最有可能多个表有一个名为id的列; 在where子句中使用表前缀