where 子句中的列不明确 - 这是啥意思?

Posted

技术标签:

【中文标题】where 子句中的列不明确 - 这是啥意思?【英文标题】:Column in where clause is ambiguous - What does that mean?where 子句中的列不明确 - 这是什么意思? 【发布时间】:2011-08-29 01:32:31 【问题描述】:

我在 mysql 中遇到了 join 子句的这个错误,但我对 JOIN 参数还很陌生,我不确定这意味着什么。有人可以帮忙吗?

where 子句中的列 'id' 不明确

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

【问题讨论】:

【参考方案1】:

您需要完全限定id,因为venuesvenues_meta 都有一个名为id 的列。

【讨论】:

@Chris Morgan 谢谢它也对我有帮助 所以只是为了让其他人清楚......它需要成为 WHERE 场地.id = 12【参考方案2】:

我想你想要:

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

(但请确保您想要的是 v.venue_id 而不是 v.id)

【讨论】:

如果您尝试将venues 别名为v 并将venues_meta 别名为m,则您的逗号不太正确。【参考方案3】:

试试这个代码

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

【讨论】:

请多解释一下您的代码以及您的解决方案是什么 我为代码紧凑性创建了一个别名。并指定哪个表显式选择id

以上是关于where 子句中的列不明确 - 这是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

where 子句中的列“id”不明确

SQL WHERE 子句与拉丁文和泰文字符的列不匹配

SQLSTATE [23000]:违反完整性约束:1052 where 子句中的列 'tenant_id' 不明确

这个 sql where 子句中的“&”是啥意思?

Android Room 编译时警告外​​键中的列不属于索引。这是啥意思?

如何修复程序中的“歧义”where子句