2015-10-06 44 views
-1

所以,我想结合两个表使用联合订单取代购物车。对于联盟的查询看起来是这样的:SQL Union帮助 - 结果是逆向的

SELECT o1.EMAILADDRESS, o1.EVENTNAME 
FROM ZZ001Email1RegionOrdersFinal o1 
WHERE o1.EMAILADDRESS = '[email protected]' 

UNION 

SELECT c1.EMAILADDRESS, c1.EVENTNAME 
FROM ZZ001Email1RegionCartsFinal c1 
WHERE c1.EMAILADDRESS = '[email protected]' 

附上结果,订单查询就有和工会有结果(这是用户购物车)。我想知道为什么订单不会按照它应该覆盖购物车。

左侧图像是刚刚运行顶部(订单)查询的结果,正确的图像是运行联合查询的结果,而购物车在结果时应该导致订单。

OrderResults UnionResults

+0

请不要发布[在网络的多个网站使用同一个问题(http://salesforce.stackexchange.com/questions/94889/sql-union-no-好好工作)。 – cybermonkey

+0

呵呵? “我想知道为什么订单不会覆盖购物车,因为它应该是” –

+0

德尔文 - 这也是我想知道的。 鲍勃 - 我被告知我张贴在那里的错误部分,所以我张贴在这里。 – user1799048

回答

0

记住,表被定义为无序组记录。

查询的顺序由ORDER BY子句确定。 ORDER BY条款是只有方式来保证记录的顺序。你还没有ORDER BY,所以你的关系型数据库为你提供了一个方便的订单。

试试这个:

SELECT DISTINCT U.EMAILADDRESS, U.EVENTNAME 
FROM (
    SELECT 1 AS OrderColumn, o1.EMAILADDRESS, o1.EVENTNAME 
    FROM ZZ001Email1RegionOrdersFinal o1 
    WHERE o1.EMAILADDRESS = '[email protected]' 

    UNION ALL 

    SELECT 2 AS OrderColumn, c1.EMAILADDRESS, c1.EVENTNAME 
    FROM ZZ001Email1RegionCartsFinal c1 
    WHERE c1.EMAILADDRESS = '[email protected]') U 
ORDER BY U.OrderColumn;