当前位置: 首页 > 面试题库 >

1052:字段列表中的列“ id”不明确

谷梁嘉运
2023-03-14
问题内容

我有2张桌子。tbl_names并且tbl_section两者都有id。如何选择id字段,因为我总是会收到此错误:

1052: Column 'id' in field list is ambiguous

这是我的查询:

SELECT id, name, section
  FROM tbl_names, tbl_section 
 WHERE tbl_names.id = tbl_section.id

我可以选择所有字段并避免错误。但这将浪费性能。我该怎么办?


问题答案:

SQL通过给引用加上完整的表名作为前缀来支持对列进行限定:

SELECT tbl_names.id, tbl_section.id, name, section
  FROM tbl_names
  JOIN tbl_section ON tbl_section.id = tbl_names.id

…或表别名:

SELECT n.id, s.id, n.name, s.section
  FROM tbl_names n
  JOIN tbl_section s ON s.id = n.id

推荐使用表别名-为什么键入的文字比您需要的多?

为什么这些查询看起来不同?

其次,我的答案使用ANSI-92
JOIN语法(您使用的是ANSI-89)。尽管它们执行相同的操作,但ANSI-89语法不支持OUTER连接(RIGHT,LEFT,FULL)。应该认为ANSI-89语法已被弃用,SO上有许多人不会投票支持ANSI-89语法。有关更多信息,请参见此问题。



 类似资料:
  • 问题内容: 我正在尝试获取离开此评论的用户的用户信息。 使用以下代码: 我得到了错误: 字段列表中的“ user_id”列不明确 这是什么意思? 问题答案: 这意味着查询中的两个表都具有column 。 您需要在SELECT语句中指定要获取的对象,例如

  • 我在使用Hibernate创建表时遇到了一些困难,出现了以下异常: com.mysql.jdbc.exceptions.jdbc4.mysqlsyntaxerrorexception:列“id”的列说明符不正确 任何帮助都很感激。

  • 所以首先我为我不可靠的解释道歉。我的PHP技能需要认真改进。 错误消息表示“”未知。我知道这不是真的,因为当我创建一个名为“”的变量并回显前者时,我会得到编号。 以下是完整的错误消息: 致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42S22]:未找到列:C:\xampp\htdocs\loginregister master\addnew中的“字段列表”中的1054

  • 我需要帮助。 使用方法时,在HQL中出现错误: 我猜他必须写而不是 可能是我做错了实体和关系吗? 2个实体-房屋和街道 ER模型: 餐桌街道 ID 名称 houses_id 桌房 ID 名称 我的类: 街道 房屋 我的道小鬼: StreetDaoImp: HouseDaoImpl: 错误:

  • 即使我在表中设置了关系和定义了外键,我得到这个错误的原因是什么?

  • 如果我在一个类中有以下语句,其中Synapse是一个抽象类型: 最终是否允许我仍然能够更改列表中Synapse对象的状态,但阻止我向列表中添加新的Synapse对象?如果我错了,请您解释一下final正在做什么,以及我应该在什么时候使用关键字final。