如果这是 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
与TestingTable1
onBUYER_ID
和进行比较USER_ID
。我需要看看,如果BUYER_ID
和USER_ID
匹配,那么我需要比较ITEM_ID
和,如果在PRODUCT_ID
与其中一个或两个比较之后存在不匹配,那么我需要显示结果。CREATED_TIME
LAST_TIME
TestingTable2
TestingTable1
所以如果你看上面的例子——我基本上有三个场景
- 首先
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
因此,这是我在与TestingTable1
always进行比较时需要涵盖的三种情况。并且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_TIME
TestingTable2
USER_ID
LAST_TIME
BUYER_ID
USER_ID