【问题标题】:Mysql Unknown column on viewMysql Unknown column on view
【发布时间】:2015-11-29 07:25:55
【问题描述】:

我很难理解视图、联合和连接的工作原理,

我有这样的看法:

SELECT
 id,
 CODE,
 NAME,
 type,
 quantity
FROM
 items
UNION ALL
 SELECT
    id,
    CODE,
    NAME,
    type,
    price,
    quantity
FROM
    inventory_items

表项目没有名为数量的列,但我仍然需要从inventory_items 中获取该值,如果我从我得到的项目中删除对数量的选择:

[Err] 1064 - 您的 SQL 语法有错误;检查手册 那 对应于您的 MySQL 服务器版本,以便在 FROM 项目附近使用正确的语法

如果我离开选择,我会得到:

[Err] 1054 - 字段列表中的未知列“数量”

我到底想完成什么?我想使用唯一列从这些表中选择所有数据,我不想要 name1、name2 列等。

这样做的正确方法是什么?

【问题讨论】:

  • 该列不在表中。该列不在视图中。取决于误差的角度
  • 使用联合,您必须在两者中使用相同的列。您必须添加到联合价格 SELECT id, CODE, NAME, type, price quantity FROM items

标签: php mysql


【解决方案1】:

UNION 期望每组结果中的列数相同。如果您有一个始终为空的列,您可以简单地选择 NULL 而不是真正的列。请注意,列名取自第一个 SELECT,因此您需要为您的 NULL 添加一个别名(或者只是切换 SELECT)

SELECT
 id,
 CODE,
 NAME,
 type,
 NULL AS price,
 NULL AS quantity
FROM
 items
UNION ALL
 SELECT
    id,
    CODE,
    NAME,
    type,
    price,
    quantity
FROM
    inventory_items

【讨论】:

  • 它成功了,我必须等待 10 分钟才能选择这个作为正确答案。
  • 当你说,切换选择,你到底是什么意思?
  • 我的意思是您可以先进行inventory_items 查询。这只是为了避免添加AS quantity。无论哪种方式都无关紧要。
猜你喜欢
  • 2011-07-06
  • 2020-10-13
  • 1970-01-01
  • 1970-01-01
  • 2015-01-22
  • 2011-09-09
  • 2013-01-15
  • 2018-07-13
  • 1970-01-01
相关资源
最近更新 更多