LEFT JOIN сопоставит каждой строке t1 все более ранние даты t2. Python-словарь выведет {True: 100500}: True, 1 и 1.0 равны как ключи.
SQL LEFT JOIN по датам и равные ключи словаря Python
LEFT JOIN сопоставит каждой строке t1 все более ранние даты t2. Python-словарь выведет {True: 100500}: True, 1 и 1.0 равны как ключи.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
SELECT * FROM table1 AS t1 LEFT JOIN table2 AS t2 ON t1.date_start > t2.date_start
d = { True: 42, 1: 2, 1.0: 100500 } print(d)
Ответ
LEFT JOIN сопоставит каждой строке t1 все более ранние даты t2. Python-словарь выведет {True: 100500}: True, 1 и 1.0 равны как ключи.
Для SQL нет исходных таблиц, поэтому точный набор строк неизвестен. На каждую t1 попадут все t2, для которых t1.date_start > t2.date_start; при отсутствии совпадений справа будут NULL. Сравнения с NULL не дают true, порядок без ORDER BY не гарантирован.
В Python True == 1 == 1.0, и их хеши совпадают. Три записи литерала обновляют одно значение, сохраняя первый ключ True и последнее значение 100500. Это не три независимых ключа разных типов.