为啥我在 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】:

如果您是从VIEWvw_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 错误?

为啥我在尝试从 C# 处理程序发布 GraphQL 查询时收到错误请求?