我正在努力了解视图,联合和联接的工作方式,
我有这个观点:
SELECT
id,
CODE,
NAME,
type,
quantity
FROM
items
UNION ALL
SELECT
id,
CODE,
NAME,
type,
price,
quantity
FROM
inventory_items
表项目没有名为quantity的列,但我仍然需要从inventory_items获取该值,如果我从我获得的项目中删除数量选择:
[Err] 1064 - 您的SQL语法有错误;检查手册 那 对应于您的MySQL服务器版本,以便在FROM项目附近使用正确的语法
如果我离开选择我得到:
[Err] 1054 - 字段列表'
中的未知列'数量'
我到底想要完成什么?我想使用唯一列从这些表中选择所有数据,我不想要name1,name2列等。
这样做的正确方法是什么?
答案 0 :(得分:3)
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