【问题标题】: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'

【问题讨论】:

    标签: php mysql join mysql-error-1052


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 2022-01-28
    • 2012-09-09
    • 2011-06-05
    • 2011-05-12
    • 1970-01-01
    相关资源
    最近更新 更多