我有一张_sync_history
包含这些数据的表格:
+----+----------------+---------------------+
| id | object_name | sync_time |
+----+----------------+---------------------+
| 1 | territory | 2015-07-21 22:29:02 |
| 2 | user | 2015-07-21 22:29:19 |
| 3 | userterritory | 2015-07-21 22:29:38 |
| 4 | account | 2015-07-21 22:30:05 |
| 5 | accountshare | 2015-07-21 22:39:04 |
| 6 | address_vod__c | 2015-07-22 00:47:38 |
| 7 | group | 2015-07-22 01:23:30 |
| 8 | recordtype | 2015-07-22 01:23:51 |
| 9 | user | 2015-07-23 13:04:20 |
| 10 | account | 2015-07-23 13:04:59 |
+----+----------------+---------------------+
我想获得user
之间的行,2015-07-21 22:29:19
并2015-07-23 13:04:20
表示给定的最后一个同步时间和上一个同步时间之间的行object_name
。我正在这样做:
SELECT * FROM `user` WHERE lastmodifieddate > (SELECT sync_time FROM `_sync_history` WHERE object_name='user' ORDER BY sync_time ASC LIMIT 1)
但这只会给我最后一个 sync_time 及以上的那些是不正确的,我如何获得我需要的那些?
您需要找到两次,一次使用您所拥有的 (
LIMIT 1
),第二次使用LIMIT 1 OFFSET 1
.我也会使用
ORDER BY ... DESC
, 不是ASC
. 您的措辞表明您需要最后2个出现之间的行'user'
:您可以使用
UDV
:根据我收集到的信息,我会做: