我正在尝试为我创建的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
当我单独执行时,上述工作正常。但是当我将它用作视图时,它并没有给我服务部分的结果。
有人可以帮帮我吗?
答案 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中的两个选择中交换的,如果是不同的数据类型,你会得到一个错误,如果没有,你会得到错误的结果......是吗?