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

时间:2013-02-23 01:50:32

标签: sql inner-join ambiguous

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

其中两个表的列名为“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"); 

5 个答案:

答案 0 :(得分:12)

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

 SELECT table1.name1, table2.name1, etc.

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

也许不是正确的问题,但我们如何才能创造出类似的东西:

Table a
-------
id | x | y 
1 | 2 | 3 


Table b
-------
id | a_id | x | y 
1  | 1    | 2 | 3


SQL

SELECT * FROM
JOIN a.id = b.a_id

结果如下:

array(
    a.id: 1,
    b.id: 1,
    a.x: 2
)

我的观点

具有相同column names的表被合并,我猜第一个表的ID获胜。

答案 4 :(得分:0)

确实,您必须使用表名来分隔列。例如,

tf.keras.losses.MeanSquaredError() # put parentheses

@ dud3解释了表1 SELECT table1.name1, table2.name1, etc. 中列名name1的问题,将覆盖表2 table1.name1中的列名。

选择它们时可以使用table2.name1语句,以便在数组中分别接收它们。例如

AS

您可以使用任何其他列名称来表示SELECT table1.name1, table2.name1 AS table2_name1, etc. 。在这里,您将在形成的数组中使用不同的列名。