如果这是 TestingTable1 中的数据
BUYER_ID | ITEM_ID | CREATED_TIME
----------+-----------------+----------------------
1345653 151851771618 2012-07-09 19:57:33
1345653 110909316904 2012-07-09 21:29:06
1345653 221065796761 2012-07-09 19:31:48
如果这是TestingTable2中的以下数据
USER_ID | PRODUCT_ID | LAST_TIME
---------+----------------+-----------------------
1345653 150851771618 2012-07-09 19:57:33
1345653 110909316904 2012-07-09 22:29:06
1345653 221165796761 2012-07-09 12:31:48
我需要TestingTable2与TestingTable1onBUYER_ID和进行比较USER_ID。我需要看看,如果BUYER_ID和USER_ID匹配,那么我需要比较ITEM_ID和,如果在PRODUCT_ID与其中一个或两个比较之后存在不匹配,那么我需要显示结果。CREATED_TIMELAST_TIMETestingTable2TestingTable1
所以如果你看上面的例子——我基本上有三个场景
- 首先
TestingTable1,在第一行与第一行ITEM_ID不匹配PRODUCT_ID,TestingTable2但CREATED_TIME与LAST_TIME两个表中的第一行匹配 - 其次
TestingTable1,在第二行中,第二行与第二行CREATED_TIME不匹配LAST_TIME,TestingTable2但ITEM_ID与PRODUCT_ID两个表中的第二行匹配 - 第三 - 在
TestingTable1中,在第三行ITEM_ID中不匹配,PRODUCT_ID也不CREATED_TIME匹配LAST_TIME,所以在第三行中,它们都与第三行不匹配TestingTable1。
TestingTable2因此,这是我在与TestingTable1always进行比较时需要涵盖的三种情况。并且TestingTable1是需要始终进行比较的主表,因此这意味着其中的数据TestingTable1始终是准确的。
所以我需要考虑上面的例子来显示这样的结果,如果不匹配其中一个或两个 -TestingTable1数据然后在它旁边是相同的TestingTable2数据,这样我就可以看到与之TestingTable1相比有什么值TestingTable2
BUYER_ID | ITEM_ID | CREATED_TIME | USER_ID | PRODUCT_ID | LAST_TIME
-----------+-----------------+---------------------------+----------------+--------------------+-----------------------
1345653 151851771618 2012-07-09 19:57:33 1345653 150851771618 2012-07-09 19:57:33
1345653 110909316904 2012-07-09 21:29:06 1345653 110909316904 2012-07-09 22:29:06
1345653 221065796761 2012-07-09 19:31:48 1345653 221165796761 2012-07-09 12:31:48
所以我写了一个查询,我认为它会涵盖我所有的三个场景,但只有它涵盖First Two了Third One. 我很困惑我们是否可以实现第三种情况?
SELECT *
FROM(
SELECT *
FROM TestingTable1 A
JOIN TestingTable2 B ON A.BUYER_ID = B.USER_ID AND B.LAST_TIME = A.Created_TIME
WHERE B.PRODUCTID <> A.ITEM_ID
UNION ALL
SELECT *
FROM TestingTable1 A
INNER JOIN TestingTable2 B ON A.BUYER_ID = B.USER_ID AND B.PRODUCTID = A.ITEM_ID
WHERE B.t1time <> A.Created_TIME
) X
任何建议将不胜感激。
更新:-
只是快速更新我最初想做的事情。因为我知道我的第三种情况很少有问题。
首先在 中TestingTable1,我按和排序(ORDER BY)表,我用BUYER_ID和排序,我通过确保数据属于和在给定日期进行比较。CREATED_TIMETestingTable2USER_IDLAST_TIMEBUYER_IDUSER_ID