假设我有两张桌子:
成员
------------------------
| user_id | first_name |
------------------------
留言
--------------------------------------------------
| sender_id | recipient_id | message_type | body |
--------------------------------------------------
我想创建一个返回的查询:
---------------------------------------------
| user_id | first_name | number_of_messages |
---------------------------------------------
number_of_messages
应该只计算某种类型的消息,message_type = 0
但是我仍然想在结果集中包含没有发送任何该类型消息的成员。
这是我目前所拥有的:
SELECT [user_id], [first_name], COUNT(sender_id) as number_of_messages
FROM [Member]
FULL OUTER JOIN [Message] ON user_id = sender_id
where message_type = 0
GROUP BY [Member].[user_id], [first_name]
ORDER BY number_of_messages DESC
此查询的问题是任何未发送类型 0 消息的成员都不会包含在结果集中。所以我有点想使用该message_type = 0
子句来减少number_of_messages
,但是我不希望它影响返回的结果数量。
如果您看到我可以对我的查询进行任何其他优化,也请随时发表评论。