Tại sao truy vấn này
DELETE FROM test
WHERE id = ( SELECT id
FROM (SELECT * FROM test) temp
ORDER BY RAND()
LIMIT 1
);
đôi khi xóa 1 hàng, đôi khi 2 hàng và đôi khi không có gì?
Nếu tôi viết nó dưới dạng này:
SET @var = ( SELECT id
FROM (SELECT * FROM test) temp
ORDER BY RAND()
LIMIT 1
);
DELETE FROM test
WHERE id=@var;
Sau đó, nó hoạt động chính xác - là vấn đề trong truy vấn con?
LIMIT
không chỉ được hỗ trợ khi sử dụngIN
(<code> được thay thế bằng backticks ~ drachenstern)