MySQL имеет несколько проблем с ОБНОВЛЕНИЕ и подзапросами.
SELECT * FROM table1 WHERE foo IN (SELECT foo FROM table2 LIMIT 50)
невозможно.Но следующее:
SELECT *
FROM table1 t
JOIN (SELECT foo FROM table2 LIMIT 50) as tmp
ON tmp.foo = t.foo;
Я считаю, что это «(запрос) как таблица» называется «виртуальным временным представлением» (но я могу ошибаться ...)
Вторая проблема, с которой вы сталкиваетесь, заключается в том, что вы не можете обновить таблицу, из которой читаете в данный момент.
Но (как указал Гривс) ОБНОВЛЕНИЕ знает ОГРАНИЧЕНИЕ:
UPDATE clientdetails
SET lastupdateddate = NOW()
ORDER BY id
LIMIT 0, 5000;
должно работать.Убедитесь, что у вас есть ORDER BY, иначе вы можете обновить некоторые строки дважды, а некоторые - никогда.