我有两张桌子。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
我可以只选择所有字段并避免错误。但这将是性能上的浪费。我该怎么办?
发布于 2011-07-10 09:31:36
SQL支持通过在引用前加上完整的表名来限定列:
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:
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。
发布于 2011-07-10 09:11:49
在SELECT
语句中,需要在id前面加上要从中选择的表。
SELECT tbl_names.id, name, section
FROM tbl_names
INNER JOIN tbl_section
ON tbl_names.id = tbl_section.id
或
SELECT tbl_section.id, name, section
FROM tbl_names
INNER JOIN tbl_section
ON tbl_names.id = tbl_section.id
发布于 2011-07-10 09:12:08
您可以通过提供一个完全限定的名称来执行此操作,例如:
SELECT tbl_names.id as id, name, section FROM tbl_names, tbl_section WHERE tbl_names.id = tbl_section.id
,它将提供tbl_names的id。
https://stackoverflow.com/questions/6638520
复制相似问题