查询具有相同列名的两个表的内部连接,字段列表中的列'exName'不明确



我使用以下查询来查询三个表的内部联接。

其中两个表具有名为"name1"的列。我得到以下错误。

Column 'exName' in field list is ambiguous

"name1"列是外键,因此信息应该相同。有人能提出一个紧凑的方法吗?

$result = mysql_query("SELECT name1,name2,name3 FROM `table1` INNER JOIN `table2` ON table2.name1=table1.PrimaryKey INNER JOIN `table3` ON table3.name1=table1.PrimaryKey"); 

您需要使用表名限定列名。

 SELECT table1.name1, table2.name1, etc.

您需要将选择列表中的列称为:

SELECT <table name>.name1, <table name>.name2, <table name>.name3

当你在from子句中引入表时,你也可以给它们一个别名,以保存一些击键并使其更干净:

SELECT 
     t1.name1
    ,t2.name2
    ,t3.name3
FROM table1 AS t1
INNER JOIN table2 AS t2
    ON t2.name1 = t1.PrimaryKey
INNER JOIN table3 AS t3
    ON t3.name1 = t1.PrimaryKey
SELECT T1.name1,T2.name2,T3.name3 
FROM `table1` T1 
INNER JOIN `table2` T2 ON t2.name1=t1.PrimaryKey 
INNER JOIN `table3` T3 ON t3.name1=t1.PrimaryKey

确实需要使用表名来分隔列。例如

 SELECT table1.name1, table2.name1, etc.

正如@dud3所解释的,表1 table1.name1中的列名name1覆盖了表2 table2.name1中的列名。

选择它们时可以使用AS语句,以便在数组中分别接收它们。E.g

SELECT table1.name1, table2.name1 AS table2_name1, etc.

您可以使用任何不同的列名来表示table2_name1。在这里,您将在形成的数组中使用不同的列名。

相关内容

  • 没有找到相关文章

最新更新