使用UNION创建MySQL视图

9 mysql sql union

我正在尝试为以下查询创建一个视图.

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
Run Code Online (Sandbox Code Playgroud)

但是不能这样做.我正在使用MySql查询浏览器.我得到的错误是:

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

有人可以帮我这个吗?

小智 8

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
Run Code Online (Sandbox Code Playgroud)

我试过这个,它有效!感谢大家 :)


Lea*_*ing 4

您可能想在第二个选择中更改用户 ID 和位置的顺序。联合的所有选择中的列名称应 1 比 1 匹配。

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

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

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