Warum macht diese Abfrage
DELETE FROM test
WHERE id = ( SELECT id
FROM (SELECT * FROM test) temp
ORDER BY RAND()
LIMIT 1
);
mal 1 zeile löschen, mal 2 zeilen und mal nichts?
Wenn ich es in dieser Form schreibe:
SET @var = ( SELECT id
FROM (SELECT * FROM test) temp
ORDER BY RAND()
LIMIT 1
);
DELETE FROM test
WHERE id=@var;
dann funktioniert es einwandfrei - liegt ein problem in der unterabfrage vor?
LIMIT
wird nicht nur für die Verwendung vonIN
(<code> ersetzt durch backticks ~ drachenstern)