SQL 选择“问题”
本文关键字:问题 选择 SQL | 更新日期: 2023-09-27 18:24:41
您好,我需要有关此查询的帮助。我试图使用他们的 UserID 选择属于两个用户的所有消息。我想返回一个变量,以了解 CurrentUserId 是每条消息的接收方还是发送方。
表结构:
表名:消息
列名:
- 发件人用户 ID(发送邮件的用户的 ID(
- 接收者用户 ID(消息发送到的用户的 ID( 消息
- (保留消息( 发送
- 日期(发送邮件的时间(
预期输出示例:
消息---------------------------发送日期------------------------------来自我
您好用户--------------------------2012年16月2日23:45----------------------True----
立即查询:
SELECT Message, SentDate FROM Messages
WHERE SenderUserId=@CurrentUser AND ReceiverUserId=@OtherUser
OR SenderUserId=@CurrentUser AND ReceiverUserId=@OtherUser
所以我基本上想做的是,我想返回这些用户之间发送的所有消息,我还想用布尔值知道@CurrentUser是否是每条消息的接收者的发送者。如果消息是从@CurrentUser发送的,则为 True;如果消息是由@OtherUser发送的,则为 False。谢谢
SELECT Message, SentDate ,
CASE
WHEN SenderUserId=@CurrentUser THEN 'True'
ELSE 'False'
END as is_sent_by_current_user
FROM Messages
WHERE (SenderUserId=@CurrentUser AND ReceiverUserId=@OtherUser )
OR (ReceiverUserId=@CurrentUser AND SenderUserId=@OtherUser)
这应该可以解决问题。
SELECT Message, SentDate,case when SenderUserId = @CurrentUser then 'true' else 'false' end as sentByYou FROM Messages
WHERE (SenderUserId=@CurrentUser AND ReceiverUserId=@OtherUser)
OR (SenderUserId=@OtherUser AND ReceiverUserId=@CurrentUser)
如果您不需要使用存储过程从SQL获取数据,我建议您获取所需的数据,然后开始在代码中进行所有必要的检查。通过这样做,您的所有规则和计算都将位于 1 个位置(理想情况下为 WILL(。
希望对您有所帮助。