Tenho uma tabela _sync_history
com esses dados:
+----+----------------+---------------------+
| 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 |
+----+----------------+---------------------+
Eu quero obter as linhas user
entre 2015-07-21 22:29:19
e 2015-07-23 13:04:20
significando as linhas entre o último sync_time e o anterior sync_time para um determinado arquivo object_name
. eu estava fazendo isso:
SELECT * FROM `user` WHERE lastmodifieddate > (SELECT sync_time FROM `_sync_history` WHERE object_name='user' ORDER BY sync_time ASC LIMIT 1)
Mas isso me dará apenas os do último sync_time e acima que não estão corretos, como faço para obter os que preciso?
Você precisa encontrar os dois tempos, um usando o que você tem (
LIMIT 1
) e o segundo usandoLIMIT 1 OFFSET 1
.Eu também usaria
ORDER BY ... DESC
, nãoASC
. Seu texto sugere que você deseja as linhas entre as 2 últimas aparições de'user'
:Você poderia fazer isso usando
UDV
:Pelo que entendi eu faria: