1052: Column 'id' in field list is ambiguous

前端 未结 8 1871
面向向阳花
面向向阳花 2020-11-22 13:17

I have 2 tables. tbl_names and tbl_section which has both the id field in them. How do I go about selecting the id field,

相关标签:
8条回答
  • 2020-11-22 13:41
    SELECT tbl_names.id, tbl_names.name, tbl_names.section
      FROM tbl_names, tbl_section 
     WHERE tbl_names.id = tbl_section.id
    
    0 讨论(0)
  • 2020-11-22 13:45

    What you are probably really wanting to do here is use the union operator like this:

    (select ID from Logo where AccountID = 1 and Rendered = 'True')
      union
      (select ID from Design where AccountID = 1 and Rendered = 'True')
      order by ID limit 0, 51
    

    Here's the docs for it https://dev.mysql.com/doc/refman/5.0/en/union.html

    0 讨论(0)
  • 2020-11-22 13:51

    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_names
    INNER JOIN tbl_section 
       ON tbl_names.id = tbl_section.id
    

    OR

    SELECT tbl_section.id, name, section 
    FROM tbl_names
    INNER JOIN tbl_section 
       ON tbl_names.id = tbl_section.id
    
    0 讨论(0)
  • 2020-11-22 13:52

    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

    0 讨论(0)
  • 2020-11-22 13:56

    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.

    0 讨论(0)
  • 2020-11-22 13:57

    Already there are lots of answers to your question, You can do it like this also. You can give your table an alias name and use that in the select query like this:

    SELECT a.id, b.id, name, section
    FROM tbl_names as a 
    LEFT JOIN tbl_section as b ON a.id = b.id;
    
    0 讨论(0)
提交回复
热议问题