使用 Where 子句从视图中选择以引用另一个数据库 - 未知列错误
Posted
技术标签:
【中文标题】使用 Where 子句从视图中选择以引用另一个数据库 - 未知列错误【英文标题】:Select from View using Where clause to refer to another database - Unknown Column error 【发布时间】:2012-10-31 04:30:37 【问题描述】:我正在尝试从我创建的视图中选择某些值。声明如下:
SELECT * FROM dashboard.team
WHERE ac2012.acx_users.id = 1;
如您所见,这里引用了 2 个数据库:
-
仪表板数据库、团队表
ac2012 数据库,acx_users.id 表
ac2012.acx_users.id 是原始 Create View 语句中的正则表达式,我正在使用它,因为我当然不能在 Where 子句中使用 ALIAS...但是,这显示错误:
Error Code 1054: Unknown column 'ac2012.acx_users.id' in 'where clause'
我不确定如何让它工作,因为在这种情况下我需要引用其他数据库,但它无法识别数据库。任何提示将不胜感激。
【问题讨论】:
列名中有.
吗?
做吧`tablename
`。 `column name
`
不,仪表板是数据库,团队是表。而ac2012是数据库,acx_users是表,id是列名
ac2012.acx_users.id is the regular expression in the original Create View statement
是什么意思?
【参考方案1】:
由于您是从视图中进行选择,因此基础数据库不再可见。您只能看到视图呈现的内容,作为视图所在的数据库的一部分,因此请尝试WHERE acx_users.id = 1
,或者您在视图定义中将该字段别名的任何内容。
【讨论】:
我尝试使用 Alias: WHERE 'User ID' = 1 ,但是它没有返回任何结果,即使我看到该列的值是 1 的许多条目。我的语法好吗? 如果您的查询中确实是带有单引号的'User ID'
,那么您实际上是在比较一个 STRING,其值为“用户 ID”,而不是字段名称。字段名称使用反引号进行转义,而不是单引号。单引号中的任何内容都立即只是一个字符串,而不是表/字段/任何值。【参考方案2】:
SELECT * FROM dashboard.team
LEFT OUTER JOIN ac2012 ON ac2012.CommonColumnName=dashboard.CommonColumnName
WHERE ac2012.acx_users.id = 1;
======================= 请替换为原始列名...
【讨论】:
以上是关于使用 Where 子句从视图中选择以引用另一个数据库 - 未知列错误的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 where/have 子句选择唯一行并与另一个表进行比较
Linq to Entities 添加 Where 子句以在另一个表中查找 EXISTS