我有一个像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