1所有用户的通知

时间:2014-07-17 23:56:18

标签: sql database mysqli

这是一个非常奇怪和牵强的问题,所以请不要因为我不知道是否可能而打败我。

我有一个通知系统,我希望用户在登录时有1个通知。当用户与另一个用户交互时,它使用notification_target用户,而目标用户通过id获取通知。

所以......我想知道我是否在表格中设置了通知是否可以在notification_targetuser表中添加任何内容..所有用户或者可能是1到1000,因此所有数千名成员都会收到该通知。

所以相反它只是targetuser 15,如果可能的话,我希望它是1到15的所有用户。

就像我说的,一个奇怪的问题,但技术现在是多才多艺的。

1 个答案:

答案 0 :(得分:1)

您可以使用null指示“for all”指示符,使用coalesce确保为任何用户返回结果。

可悲的是,SQL Fiddle目前还没下来,而且我没有MySQL的副本。 以下是MS-SQL的示例:

declare @table table(
id bigint not null identity(1,1)
, targetUserId bigint
, [notification] nvarchar(256)
)

insert @table
select 5, 'notification to user 5'
union select 6, 'notification to user 6'
union select null, 'notification to all users'
union select 11, 'notification to user 11'
union select 12, 'notification to user 12'

--get notifications for user 1 (there are none, except the one for all)
declare @targetUserId bigint = 1
select * from @table where @targetUserId = coalesce(targetUserId,@targetUserId)

--get notifications for user 5 (one result for id=5 plus one for all)
set @targetUserId = 5
select * from @table where @targetUserId = coalesce(targetUserId,@targetUserId)