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。谢谢

SQL 选择“问题”

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(。

希望对您有所帮助。