我使用以下查询查询三个表的内部联接。
其中两个表的列名为“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");
答案 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
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.
。在这里,您将在形成的数组中使用不同的列名。