排除结果并使用SQL查询执行插入

时间:2012-01-20 09:57:07

标签: mysql sql

表a

Rowid              Msgid        Userid
1                   3             55
2                   3             56
3                   3             57
4                   4             55
5                   4             56

表组

RowID              GroupID            UseriD
1                      2               55
2                      2               56
3                      2               57
4                      2               58
5                      2               59
6                      2               60
7                      3               60
8                      3               55

这里有一个表agroup表。 Rowid主键

我想在表格

中插入行

此查询

在表a中插入行,即msgid 3已经有55 56 57所以它必须只插入58 59 60.

Insert into 
table a (msgid,Userid) 
values(@msgid,@userid) 
where userid not in table a 
where tbl_a.msgid=3 
and tbl_group.groupid = 2

对于Msgid 3,我想检查表a中是否有任何组成员(groupID 2),如果没有,则向其添加一行。  即添加到表格

rowid    Msgid    Userid
  6        3        58
  7        3        59
  8        3        60

所以我不会插入用户ID 55,56,57,因为它已经在msgid 3的表中了。如何查询这个场景

2 个答案:

答案 0 :(得分:0)

尝试以下代码

 Insert IGNORE into 
 table a (msgid,Userid) 
 values(@msgid,@userid) 
 where userid not in table a 
 where tbl_a.msgid=3 
 and tbl_group.groupid = 2

我正在考虑你的插入查询是正确的......

祝你好运!!!

答案 1 :(得分:0)

实际上非常简单:

INSERT INTO TABLE_GROUP
SELECT * FROM TABLE_A
WHERE ... -- you can have or not have a where clause as you like
ON DUPLICATE KEY UPDATE;