Per trovare il timestamp più recente, utilizza prima l'operatore di confronto per escludere timestamp futuri. Quindi, ordina per intervallo più piccolo sottraendo possibili candidati al timestamp dal timestamp desiderato. Per ottenere solo il risultato più recente, limita 1.
Per ottenere la tabella2 val
colonna da visualizzare con le colonne table1, devi solo eseguire lo stesso codice per table2 all'interno di una sottoquery.
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;