为啥我在 View SELECT 查询中收到带有 WHERE 子句的“未知列 'xyz'”?
Posted
技术标签:
【中文标题】为啥我在 View SELECT 查询中收到带有 WHERE 子句的“未知列 \'xyz\'”?【英文标题】:Why am I receiving "Unknown column 'xyz'" with WHERE clause on View SELECT query?为什么我在 View SELECT 查询中收到带有 WHERE 子句的“未知列 'xyz'”? 【发布时间】:2017-01-15 08:49:10 【问题描述】:mysql 数据库(社区)版本:5.6.27,Windows 7 Pro x64
我刚刚创建了这个视图:
DELIMITER $$
ALTER ALGORITHM=UNDEFINED DEFINER=`admin`@`%` SQL SECURITY DEFINER VIEW `vw_qb_assembly_component_info` AS (
SELECT
`qb_assembly_components`.`assembly_item_id` AS `assemblyId`,
`ai`.`name` AS `assemblyName`,
`qb_assembly_components`.`component_quantity` AS `componentQuantity`,
`qb_assembly_components`.`component_item_id` AS `item_id`,
`ci`.`name` AS `name`,
`ci`.`item_number_type` AS `item_number_type`,
`ci`.`type` AS `type`
FROM ((`qb_assembly_components`
JOIN `qb_items` `ai`
ON ((`ai`.`item_id` = `qb_assembly_components`.`assembly_item_id`)))
JOIN `qb_items` `ci`
ON ((`ci`.`item_id` = `qb_assembly_components`.`component_item_id`))))$$
DELIMITER ;
我正在尝试在视图中查询具有特定 qb_assembly_components
.assembly_item_id
值的行。我尝试了几种在 WHERE 子句中定义列的变体,但总是收到错误:
“where 子句”中的未知列“xyz”
以下是我尝试过的版本:
WHERE `qb_assembly_components`.`assemblyId` = 'RR-0T056'
WHERE `qb_assembly_components`.`assembly_item_id` = 'RR-0T056'
WHERE `assemblyId` = 'RR-0T056'
我被难住了。我用谷歌搜索了一下,发现一些结果似乎表明使用别名是可行的方法(我在上面 3 个示例中的最后一个示例),但它不起作用。
我做错了什么?
【问题讨论】:
【参考方案1】:如果您是从VIEW
vw_qb_assembly_component_info 中选择的``
那么 where 子句应该引用视图名(而不是原始表名)
WHERE `vw_qb_assembly_component_info`.`assemblyId` = 'RR-0T056'
【讨论】:
以上是关于为啥我在 View SELECT 查询中收到带有 WHERE 子句的“未知列 'xyz'”?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在运行查询时收到错误 -4700(尝试使用新功能模式)?
为啥 MySQL View 和同一个 View 的底层 SELECT 查询返回不同的结果?
带有联合错误的 MySQL 视图 - “视图的 SELECT 包含 FROM 子句中的子查询”
我在 Access 连接查询中收到 #Error 消息,但我不知道为啥
为啥我在 ProcessBuilder --Java 中收到 IllegalThreadStateException 错误?