ทำไมแบบสอบถามนี้
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)