首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >1052:字段列表中的列'id‘不明确

1052:字段列表中的列'id‘不明确
EN

Stack Overflow用户
提问于 2011-07-10 09:08:14
回答 7查看 418.2K关注 0票数 111

我有两张桌子。tbl_namestbl_section,其中都有id字段。我该如何选择id字段,因为我总是得到这个错误:

代码语言:javascript
复制
1052: Column 'id' in field list is ambiguous

下面是我的问题:

代码语言:javascript
复制
SELECT id, name, section
  FROM tbl_names, tbl_section 
 WHERE tbl_names.id = tbl_section.id

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

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-07-10 09:31:36

SQL支持通过在引用前加上完整的表名来限定列:

代码语言:javascript
复制
SELECT tbl_names.id, tbl_section.id, name, section
  FROM tbl_names
  JOIN tbl_section ON tbl_section.id = tbl_names.id 

...or a table alias:

代码语言:javascript
复制
SELECT n.id, s.id, n.name, s.section
  FROM tbl_names n
  JOIN tbl_section s ON s.id = n.id 

表别名是推荐的方法--为什么要键入更多类型?

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

其次,我的答案使用ANSI-92JOIN语法(您的是ANSI-89)。虽然它们执行相同的操作,但ANSI-89语法不支持外部联接(右、左、全)。ANSI-89语法应该被认为是被弃用的,有许多人不会投票支持ANSI-89语法来加强这一点。为了more information, see this question

票数 175
EN

Stack Overflow用户

发布于 2011-07-10 09:11:49

SELECT语句中,需要在id前面加上要从中选择的表。

代码语言:javascript
复制
SELECT tbl_names.id, name, section 
FROM tbl_names
INNER JOIN tbl_section 
   ON tbl_names.id = tbl_section.id

代码语言:javascript
复制
SELECT tbl_section.id, name, section 
FROM tbl_names
INNER JOIN tbl_section 
   ON tbl_names.id = tbl_section.id
票数 18
EN

Stack Overflow用户

发布于 2011-07-10 09:12:08

您可以通过提供一个完全限定的名称来执行此操作,例如:

代码语言:javascript
复制
SELECT tbl_names.id as id, name, section FROM tbl_names, tbl_section WHERE tbl_names.id = tbl_section.id

,它将提供tbl_names的id。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6638520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档