Почему этот запрос
DELETE FROM test
WHERE id = ( SELECT id
FROM (SELECT * FROM test) temp
ORDER BY RAND()
LIMIT 1
);
иногда удаляют 1 строку, иногда 2 строки, а иногда ничего?
Если я напишу это в этой форме:
SET @var = ( SELECT id
FROM (SELECT * FROM test) temp
ORDER BY RAND()
LIMIT 1
);
DELETE FROM test
WHERE id=@var;
тогда это работает правильно - это проблема в подзапросе?
LIMIT
не поддерживается только для использованияIN
(<code> заменено на backticks ~ drachenstern)