我有 2 张 table 。 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 语法来加强这一点。对于 more information, see this question .
关于mysql - 1052 : Column 'id' in field list is ambiguous,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6638520/