Ihre innere Abfrage ist eine korrelierte Unterabfrage, aber sie kann table1 überhaupt nicht sehen. Dies ist eine Einschränkung für MySQL - siehe MySQL-Handbuch - D. 3. Einschränkungen für Unterabfragen . Ungefähr auf halber Höhe heißt es:
Obwohl die Unterabfrage Teil eines LEFT JOIN-Ausdrucks ist, ist dies Teil der FROM-Klausel.
Diese Neuformulierung könnte die Arbeit für Sie erledigen:
SELECT table1.id,
(SELECT COUNT(*)
FROM table2
WHERE table2.lt > table1.lt
AND table2.rt < table1.rt) AS cnt
FROM table1;