首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用UNION创建MySQL视图

使用UNION创建MySQL视图
EN

Stack Overflow用户
提问于 2009-02-05 06:34:28
回答 5查看 47.6K关注 0票数 13

我试图为下面的查询创建一个视图。

代码语言:javascript
复制
SELECT DISTINCT
  products.pid        AS id,
  products.pname      AS name,
  products.p_desc     AS description,
  products.p_loc      AS location,
  products.p_uid      AS userid,
  products.isaproduct AS whatisit
FROM products
UNION
SELECT DISTINCT
  services.s_id       AS id,
  services.s_name     AS name,
  services.s_desc     AS description,
  services.s_uid      AS userid,
  services.s_location AS location,
  services.isaservice AS whatisit
FROM services

但却无法做到。我正在使用MySql查询浏览器。我得到的错误是:

只能从SELECT命令的活动结果集创建视图。

有人能帮我吗?

EN

回答 5

Stack Overflow用户

发布于 2009-02-05 09:34:18

代码语言:javascript
复制
CREATE VIEW vw_product_services AS
SELECT DISTINCT products.pid AS id,
                products.pname AS name,
                products.p_desc AS description,
                products.p_loc AS location,
                products.p_uid AS userid,
                products.isaproduct AS whatisit
           FROM products
          UNION
          SELECT DISTINCT services.s_id AS id,
                services.s_name AS name,
                services.s_desc AS description,
                services.s_uid AS userid,
                services.s_location AS location,
                services.isaservice AS whatisit
           FROM services

我试过了而且成功了!谢谢大家:)

票数 14
EN

Stack Overflow用户

发布于 2009-02-05 06:38:43

您可能希望在第二个选择中使用userid和位置的顺序。在联合的所有选择中,列名应该匹配1到1。

编辑:对于查询浏览器,正如所指出的,“要从查询中创建视图,您必须已经成功地执行了查询。更准确地说,视图是从最新成功执行的查询创建的,而不一定是从查询区域当前的查询创建的。”

因此,在查询浏览器中创建视图之前,需要先执行查询。

错误来自查询浏览器,而不是mysql。

票数 4
EN

Stack Overflow用户

发布于 2009-02-05 06:42:46

将不同的类型合并到同一列中。(名称可能不同,但类型必须相同,或者至少是自动浇注的。)但是,正如@Learning指出的那样,您似乎扭曲了SELECT列枚举。

以防万一,正确的语法(对我起作用)是

代码语言:javascript
复制
CREATE VIEW myView 
AS  
SELECT ... 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/514817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档