我有一個像twitter這樣的數據庫,有用戶和消息,用戶可以訂閱和阻止其他用戶。我需要表現出與不被堵塞訂閱用戶短信息,所以我有這樣的查詢:可以限制查詢結果嗎?
SELECT DISTINCT M.mid, M.author, M.content FROM Msgs M, Subs S, Blocks B
WHERE S.uid = 3 AND S.sub_uid = M.author AND B.uid = 3 AND M.author NOT IN
(SELECT B2.bl_uid FROM Blocks B2 WHERE B2.uid = 3)
ORDER BY M.mid DESC LIMIT 30;
沒有「LIMIT 30」的查詢工作正常,讓我只有正確的行,但「LIMIT 30 '我有錯誤的結果,因爲查詢給了我正確的行加上屬於訂閱和阻止用戶的行。 'LIMIT'如何改變結果?
編輯:有uid = 3的用戶有另外2個用戶訂閱,用戶5和6,並且用戶6被阻止,所以我需要只顯示來自用戶5的消息,但與'限制30'消息用戶6也被返回。
你能提供一個SQL小提琴的例子(www.sqlfiddle.com)嗎?或者至少要有樣本數據和期望的結果。 – sgeddes 2013-05-05 01:06:57
運行你自己的子查詢。它是否返回至少1個'NULL'? – 2013-05-05 01:51:59