【发布时间】:2012-01-17 16:04:12
【问题描述】:
我正在尝试加入几个表,但我的加入语句失败了。我相信这是因为第二个连接中的列名是“名称”,也许 MySQL 认为我正在尝试访问一个属性?我该如何解决这个问题?
SELECT surgery_city.*, s.surgeon_type, st.abbrev
FROM surgery_city
LEFT JOIN surgery_key as s ON s.surg_id = treatment_id
LEFT JOIN states as st ON st.name = surgery_city.state
WHERE treatment_id='10001'
问题是我引用 st.name 的第二个左连接 - 关于如何正确引用该列的任何想法?不幸的是,此时更改表中的列名不是一个选项:(..
谢谢,
银虎
更新:
我在上面的查询中得到的错误是:
[Err] 1267 - 操作“=”的排序规则 (utf8_unicode_ci,IMPLICIT) 和 (utf8_general_ci,IMPLICIT) 的非法混合
当我用反引号包围该字段时,我得到以下信息:
LEFT JOIN states as st ON `st.name` = seo_surgery_city.state
我得到以下信息:
[Err] 1054 - 'on 子句'中的未知列 'st.name'
它也失败了
LEFT JOIN states as st ON st.`name` = seo_surgery_city.state
(单引号 = 此处的反引号,但此处无法正常显示)
[Err] 1267 - 操作“=”的排序规则 (utf8_unicode_ci,IMPLICIT) 和 (utf8_general_ci,IMPLICIT) 的非法混合
同样失败
LEFT JOIN states as st ON `st`.`name` = seo_surgery_city.state
[Err] 1267 - 操作“=”的排序规则 (utf8_unicode_ci,IMPLICIT) 和 (utf8_general_ci,IMPLICIT) 的非法混合
【问题讨论】:
-
你能告诉我们它是如何失败的吗?你有错误吗?什么错误?
-
name 是关键字。用反引号将 st.name 括起来。
-
@MouseFood 你确定吗? MySQL Reserved Words
-
@MouseFood 我没看到
name是reference中的关键字