SQL联盟帮助 - 结果是反向的

时间:2015-10-06 21:22:52

标签: sql union

所以我想结合使用联合的两个表和订单取代推车。联合的查询如下所示:

SELECT o1.EMAILADDRESS, o1.EVENTNAME 
FROM ZZ001Email1RegionOrdersFinal  o1 
WHERE o1.EMAILADDRESS = 'andy.devoto@vividseats.com'

UNION

SELECT c1.EMAILADDRESS, c1.EVENTNAME 
FROM ZZ001Email1RegionCartsFinal c1 
WHERE c1.EMAILADDRESS = 'andy.devoto@vividseats.com'

附上订单查询单独的结果和联合的结果(即用户购物车)。我想知道为什么订单不会覆盖购物车。

左图是仅运行顶部(订单)查询的结果,右图是运行联合查询的结果,结果是购物车结果时的结果。

OrderResults UnionResults

1 个答案:

答案 0 :(得分:0)

请记住,表格被定义为无序记录集。

查询的顺序由ORDER BY子句确定。 ORDER BY子句是唯一方式来保证记录顺序。您还没有ORDER BY,因此您的RDBMS会为您提供方便的订单。

试试这个:

SELECT DISTINCT U.EMAILADDRESS, U.EVENTNAME
FROM (
    SELECT 1 AS OrderColumn, o1.EMAILADDRESS, o1.EVENTNAME 
    FROM ZZ001Email1RegionOrdersFinal  o1 
    WHERE o1.EMAILADDRESS = 'andy.devoto@vividseats.com'

    UNION ALL

    SELECT 2 AS OrderColumn, c1.EMAILADDRESS, c1.EVENTNAME 
    FROM ZZ001Email1RegionCartsFinal c1 
    WHERE c1.EMAILADDRESS = 'andy.devoto@vividseats.com' ) U
ORDER BY U.OrderColumn;