2011-05-19 83 views
7

我在MySQL中遇到了关于连接子句的这个错误,但我对JOIN参数还是比较陌生的,我不确定这是什么意思。谁能帮忙?where子句中的列含糊不清 - 这是什么意思?

列 'ID' 在where子句是暧昧

SELECT * FROM (`venues`) 
JOIN `venues_meta` ON `venues_meta`.`venue_id` = `venues`.`id` 
WHERE `id` = '12' 

回答

27

您需要完全限定id因为venuesvenues_meta都有一列称为id

+0

@克里斯摩根谢谢,这也帮助我 – Ritesh 2014-01-20 07:36:54

+2

所以只是为了让别人清楚...它需要成为WHERE venues.id = 12 – renevdkooi 2014-04-22 10:50:47

1

我想你想:

SELECT * FROM `venues` v, `venues_meta` m where v.venue_id = m.id AND m.id = '12' 

(但可以肯定的是v.venue_id你想,而不是V.ID)

+1

你的逗号并不完全相同如果你试图将'venues'别名为'v'和'venues_meta'作为'm',则为rect。 – 2011-05-19 17:18:19

+0

ack!你是对的 - 更新。 – 2011-05-19 17:47:30

0

试试这个代码

SELECT v.* 
FROM `venues` AS `v` 
INNER JOIN `venues_meta` AS `vm` ON `vm`.`venue_id` = `v`.`id` 
WHERE `v`.`id` = '12' 
+1

请详细解释一下你的代码以及你的解决方案是什么 – andreas 2016-08-12 07:19:13

+0

我为代码紧凑性创建了一个别名。并指定哪个表格明确选择'id'列 – 2016-09-19 05:31:51

+0

您的解释属于您的答案... – andreas 2016-09-19 05:34:43