1052: Column 'id' in field list is ambiguous 1052: Column 'id' in field list is ambiguous database database

1052: Column 'id' in field list is ambiguous


SQL supports qualifying a column by prefixing the reference with either the full table name:

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 

The table alias is the recommended approach -- why type more than you have to?

Why Do These Queries Look Different?

Secondly, my answers use ANSI-92 JOIN syntax (yours is ANSI-89). While they perform the same, ANSI-89 syntax does not support OUTER joins (RIGHT, LEFT, FULL). ANSI-89 syntax should be considered deprecated, there are many on SO who will not vote for ANSI-89 syntax to reinforce that. For more information, see this question.


In your SELECT statement you need to preface your id with the table you want to choose it from.

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

OR

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


You would do that by providing a fully qualified name, e.g.:

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

Which would give you the id of tbl_names