Không sử dụng NOT IN
với các truy vấn con. Nó có ngữ nghĩa sai nếu bất kỳ giá trị nào trong truy vấn con là NULL
. Trong trường hợp đó, NOT IN
không bao giờ đánh giá là TRUE, vì vậy không có hàng nào được trả về.
Thay vào đó, hãy sử dụng NOT EXISTS
:
SELECT p.id, p.name
FROM players p
WHERE p.this = 1 AND
NOT EXISTS (SELECT 1
FROM players_online po
WHERE po.name = p.name AND po.this = 'that'
)
ORDER BY RAND()
LIMIT 3, 6;