Возможный дубликат: How to select date from datetime column?Где datetime = дата без полного сканирования таблицы?
Но проблема с принятым ответом заключается в том, что он выполнит полное сканирование таблицы.
Я хочу сделать что-то вроде этого:
UPDATE records SET earnings=(SELECT SUM(rate)
FROM leads
WHERE records.user_id=leads.user_id
AND DATE(leads.datetime)=records.date)
Обратите внимание на последнюю часть: DATE(leads.datetime)=records.date
. Это делает именно то, что нужно, но нужно сканировать каждую строку. Некоторые пользователи имеют тысячи потенциальных клиентов, поэтому это может занять некоторое время.
Таблица leads
имеет INDEX
по адресу user_id
, datetime
.
Я знаю, что вы можете использовать интервальные функции и делать что-то вроде WHERE datetime BETWEEN date AND interval + days
или что-то в этом роде.
Каков наиболее эффективный и точный способ сделать это?