SQL Server 2008多个搜索查询,加入多个结果

时间:2013-03-25 04:09:46

标签: sql sql-server sql-server-2008

我有两个表,一个是消息表,另一个是 messageUser 表。 现在我需要在插入新行之前检查。

例如,

  

M_Message
的MessageId
=========
  1
  2
  3个

     

M_MessageUser
MessageId | MemberId | BusinessId
  ========= | ========= | =========
  1 | 1 | 0
  1 | 0 | 2
  2 | 1 | 0
  2 | 0 | 2
  2 | 3 | 0
  2 | 4 | 0
  3 | 1 | 0
  3 | 0 | 2
  3 | 0 | 4个

如果一个成员创建一条新消息,我想检查此消息中的用户是否存在之前。如果是,则将消息附加到先前的对话,否则创建新的对话。

  

场景1
  会员1向商家2发送了一条消息,从表中我们知道之前的会话是消息1

     

场景2
  会员1向Business 2&发送消息会员3 ,从表中我们知道之前没有对话

我之前尝试使用UNION,IN进行检查查询,但基本上只是回到所有列表。有人能给我一个帮助吗?感谢。

更新1

我可以通过使用来解决场景1但是不适合场景2

    SELECT MessageId FROM M_MessageUser
    WHERE (MemberId IN (0,1) AND BusinessId IN(0,2))
    GROUP BY MessageId
    EXCEPT
    SELECT MessageId FROM M_MessageUser
    WHERE (MemberId NOT IN (0,1) OR BusinessId NOT IN(0,2))
    GROUP BY MessageId;

更新2

问题已在https://dba.stackexchange.com/questions/37498/sql-server-2008-search-joining-query

中得到解答

0 个答案:

没有答案