Я создал запрос на выборку, который показывает мне правильные линии, что мне нужно обновить:MySQL UPDATE запрос с подзапросом
SELECT `subject`,`ticket_messages`.`ticket_ID` as t,
(SELECT `date` from `ticket_messages` where `ticket_ID`=t ORDER BY `date` DESC LIMIT 1) as d
from `ticket_messages`
LEFT JOIN `tickets` on `ticket_messages`.`ticket_ID`=`tickets`.`ticket_ID`
GROUP BY t
HAVING d<date_sub(curdate(), interval 5 day)
ORDER BY t
Я буду использовать PHP, но разработка запроса первый в PHPMyAdmin справа выше запрос работает и дает мне правильные строки. В основном это список чего-либо более 5 дней. Не беспокойтесь, что я выбираю тему и дату, это было только так, что я знал, что получаю правильные строки.
Вопрос в том, как мне превратить это в запрос на обновление? Мне потребовалось несколько часов, чтобы это уже работало.
Что я буду обновлять это:
UPDATE `tickets` SET `status`=?
В основном это будет смотреть в ticket_messages и найти последнее сообщение. Это то, что делает мой запрос select, а затем он обновит в моей таблице «билеты» статус, если последняя дата превышает 5 дней. Таблицы связаны по ссылке.
Так что мне нужно обновить с помощью подзапроса, и я не имею понятия об этом.
Хорошо, добавьте немного больше. Я пробовал это
UPDATE `tickets` SET `status`=8
WHERE
(
SELECT `subject`,`ticket_messages`.`ticket_ID` as t,
(SELECT `date` from `ticket_messages` where `ticket_ID`=t ORDER BY `date` DESC LIMIT 1) as d
from `ticket_messages`
LEFT JOIN `tickets` on `ticket_messages`.`ticket_ID`=`tickets`.`ticket_ID`
GROUP BY t
HAVING d<date_sub(curdate(), interval 5 day)
ORDER BY t)!=null
Я думал, что предложение where будет работать, если оно не равно нулю.
См http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for- что-кажется-to-me-to-be-a-very-simple-sql-query – Strawberry
Я просмотрел эту страницу и даже не знаю, о чем она говорит. Даже не уверен в том, что MCVE не выпускает. –
Взгляд - это не то же самое, что чтение. Попробуйте прочитать. – Strawberry