gpt4 book ai didi

mysql - 使用 SQL 查询发送通知

转载 作者:行者123 更新时间:2023-11-30 01:26:24 25 4
gpt4 key购买 nike

我有一个具有以下架构的表

UserId,notication_detail,notification_sent either 1 or 0 

对于不同的用户会有很多通知,例如userId=10有10个通知或userId=3有4个通知(意味着表中有4个不同的行。可能有没有针对特定 UserId 的通知。我想要做的是分别获取所有用户的未发送通知并邮寄它们。我在这里不能使用按 UserId 分组。select * from table where UserId=""and notification_sent=0,这是 1 个用户的正常情况,但我需要检查该表的不同 ID

最佳答案

假设您的数据库有以下两个表:User(UserID-PK,UserName,...)Notification(NotificationID-PK,UserID,notification_sent,...) 那么您可以使用此查询为每个用户获取以下列:HasNotifications(1,0) 和 HasUnsentNotifications(1,0) :

SELECT u.UserID,u.UserName,
CASE WHEN EXISTS(
SLEECT *
FROM Notification n
WHERE u.UserID=n.UserID ) THEN 1 ELSE 0 END HasNotifications,
CASE WHEN EXISTS(
SLEECT *
FROM Notification n
WHERE u.UserID=n.UserID AND n.notification_sent=0) THEN 1 ELSE 0 END HasUnsentNotifications
FROM User n
WHERE n.UserID IN (3,10,...)

但是,如果您需要一个包含没有通知的用户以及有未发送通知的用户的列表,那么您可以使用另一个查询:

SELECT u.UserID,u.UserName,
CASE WHEN n.NotificationID IS NOT NULL THEN 1 ELSE 0 END HasNotifications,
n.NotificationID,n.notication_detail
FROM User u LEFT OUTER JOIN Notification n ON u.UserID=n.UserID
WHERE (n.notification_sent=0 -- Has unsent notifications
OR n.NotificationID IS NULL)
WHERE n.UserID IN (3,10,...)

编辑 1 (SQL Server):

如果您不知道必须为多少用户运行查询,那么您可以使用表变量:

DECLARE @SelectedUsers TABLE(UserID INT PRIMARY KEY);
INSERT @SelectedUsers (UserID) VALUES (3);
...
INSERT @SelectedUsers (UserID) VALUES (10);

SELECT ...
FROM User n
WHERE n.UserID IN (SELECT UserID FROM @SelectedUsers)

DECLARE @SelectedUsers TABLE(UserID INT PRIMARY KEY);
INSERT @SelectedUsers (UserID) VALUES (3);
...
INSERT @SelectedUsers (UserID) VALUES (10);

SELECT u.UserID,
CASE WHEN n.NotificationID IS NOT NULL THEN 1 ELSE 0 END HasNotifications,
n.NotificationID,n.notication_detail
FROM @SelectedUsers u LEFT OUTER JOIN Notification n ON u.UserID=n.UserID
WHERE (n.notification_sent=0 -- Has unsent notifications
OR n.NotificationID IS NULL)

关于mysql - 使用 SQL 查询发送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17945287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com