MySql:当作为视图执行时,UNION没有被执行

时间:2009-02-06 02:06:46

标签: mysql

我正在尝试为我创建的2个选择语句的UNION创建一个视图。

UNION在单独执行时工作正常

但问题是当我将它作为一个视图执行时,UNION的第一部分才会被执行。

我使用的查询如下

SELECT DISTINCT products.pid AS id, 
                products.pname AS name, 
                products.p_desc AS description,
                products.p_uid AS userid,
                products.p_loc AS location,
                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
          WHERE services.s_name

当我单独执行时,上述工作正常。但是当我将它用作视图时,它并没有给我服务部分的结果。

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

如果您可以为上面的每个单独查询提供结果集,然后同时为UNION查询提供结果集,我们可能会为您的问题提供更好的答案。我的直觉反应是第二个查询可能返回一个重复值,并且由于您正在使用UNION,因此正在删除重复项。如果您使用UNION ALL,则将返回所有重复的行。例如,如果第一个查询返回了行:

1 name1 description1 10 Home Y
2 name2 description2 20 Work Y

并返回第二行:

1 name1 description1 10 Home Y

结果输出为:

1 name1 description1 10 Home Y
2 name2 description2 20 Work Y

如果您想要返回所有行:

1 name1 description1 10 Home Y
2 name2 description2 20 Work Y
1 name1 description1 10 Home Y

然后你将使用UNION ALL而不是UNION语句。

答案 1 :(得分:-1)

我认为你的字段userid和location是在union中的两个选择中交换的,如果是不同的数据类型,你会得到一个错误,如果没有,你会得到错误的结果......是吗?