我有两个表,一个是消息表,另一个是 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
中得到解答