У меня есть этот запрос, который будет работать отлично (я думаю) с более высокой версией MySQL, но, к сожалению, это не вариант.Изменение IN для входа в приложение UPDATE Подзапрос
У меня есть база данных лотерейных билетов с адресом электронной почты пользователя в каждом из них. Мне нужно найти победителей этой лотереи, но каждый адрес электронной почты может иметь только один выигрышный билет, даже если у них есть несколько выигрышных билетов. Я пытаюсь использовать несколько подзапросов для этого.
Я хочу установить только winner
= «Y» для максимального количества совпадений по электронной почте, так что у пользователя может быть только 1 «победитель» каждую неделю.
Я хочу обновить 1 строку для каждого письма, а не 1 строку во всей таблице.
Моя цель - выполнить все это в рамках одного запроса или, по крайней мере, уменьшить стресс на моем сервере в максимально возможной степени. У меня есть более 30 000 строк/билетов для обработки каждую неделю.
Я предполагаю, что лучше всего использовать JOIN вместо IN, но я не могу понять это.
UPDATE `tickets`
SET `winner`='Y'
WHERE `ticketid` IN
(SELECT `ticketid`
FROM `tickets`
WHERE `email` IN
(SELECT distinct(email)
FROM `tickets`
WHERE `date` BETWEEN '$weekstart' AND '$weekend'
AND `matches`>='3')
ORDER BY `matches` DESC LIMIT 1)
Этот запрос дает мне ошибку: "# 1235 - Эта версия MySQL еще не поддерживает 'LIMIT & IN/ALL/ANY/SOME подзапрос'"
Остерегайтесь, я не думаю, что вы знаете, что делаете! Сначала вы должны объяснить, что вы хотите сделать, потому что это не ясно. Расскажите нам, каковы ваши цели, покажите нам, что вы сделали, результат, который у вас есть, и результат, который вы хотите. – Unex
Обновление вопроса сейчас. – Arsis
Все еще неясно, чего вы хотите достичь. Обновить 1 строку на электронную почту? Или всего одна строка за всю таблицу? –