I have a table _sync_history
with this data:
+----+----------------+---------------------+
| 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 |
+----+----------------+---------------------+
I want to get the rows on user
between 2015-07-21 22:29:19
and 2015-07-23 13:04:20
meaning the rows between last sync_time and previous sync_time for a given object_name
. I was doing this:
SELECT * FROM `user` WHERE lastmodifieddate > (SELECT sync_time FROM `_sync_history` WHERE object_name='user' ORDER BY sync_time ASC LIMIT 1)
But that will give me just the ones from last sync_time and above which is not right, how do I get the ones I need?
Best Answer
You need to find both times, one using what you have (
LIMIT 1
) and the second usingLIMIT 1 OFFSET 1
.I'd also use
ORDER BY ... DESC
, notASC
. Your wording suggests you want the rows between the last 2 appearnces of'user'
: