Я совершенно бесполезен в отношении баз данных, но в настоящее время мне приходится работать с ним.Сравнение MySQL того же поля между двумя записями - запрос вечно
Мне нужно сделать запрос, который сравнивает значения даты между разными записями моей таблицы. У меня есть запрос вроде этого:
SELECT t1.serial_number, t1.fault_type, t2.fault_type
FROM shipped_products t1
JOIN shipped_products t2 ON t1.serial_number=t2.serial_number
WHERE ABS(DATEDIFF(t2.date_rcv,t1.date_rcv))<90;
Но это навсегда для запуска. Действительно, я оставил его в течение 18 часов, и он никогда не останавливался. Правильно ли этот запрос? Есть ли лучший, более умный способ сделать это?
Большое спасибо, ребята.
BTW: Я буду автоматизировать весь процесс с помощью скриптов python, поэтому, если вы знаете, как лучше сделать это внутри python без всякой логики, находящейся внутри запроса, это также поможет.
EDIT: Мой вопрос кажется неясным, поэтому я лучше объясню, что мне нужно сделать. У меня есть проблема, что иногда продукты идут в центры ремонта и отправляются обратно клиентам, как «No Deffect found». После этого клиент отправляет его в ремонтные центры, поскольку они представляют ту же проблему. Поэтому мне нужен запрос, чтобы подсчитать, сколько продуктов было для ремонта центров дважды за 90 дней. Унифицированным идентификатором для каждого отдельного продукта является его серийный номер, и именно поэтому я ищу дубликаты номеров.
только сколько записей у вас есть в таблицах? Ваш 'where' зависит от производных/вычисленных значений, поэтому невозможно использовать индексы для ускорения работы. –
Можете ли вы описать, что вы хотите сделать? Примеры данных и желаемые результаты - большая помощь. –
Любая часть обработки, которая может быть выполнена в хорошем SQL, должна быть выполнена там. Передача лишних строк, которые нужно обрабатывать в логике Python, намного менее эффективна. – msw