Pour trouver l'horodatage le plus récent, utilisez d'abord l'opérateur de comparaison pour exclure les horodatages futurs. Ensuite, triez par plus petit intervalle en soustrayant les candidats d'horodatage possibles de l'horodatage souhaité. Pour obtenir uniquement le résultat le plus récent, limitez-vous à 1.
Pour obtenir la table2 val
colonne à afficher avec les colonnes table1, il vous suffit d'exécuter le même code pour table2 dans une sous-requête.
SELECT update_time AS time, id1, id2, val, (
SELECT val from table2
WHERE '2004-10-19 10:04:00' >= update_time
ORDER BY '2004-10-19 10:04:00' - update_time
LIMIT 1
)
FROM table1 WHERE '2004-10-19 10:04:00' >= update_time
ORDER BY '2004-10-19 10:04:00' - update_time
LIMIT 1;