2012-01-20 52 views
0

表一個排除的結果和執行與SQL查詢

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主鍵

我想將行插入表中的

這個查詢將

行插入表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我要檢查是否有在表中的相關聯的任何組成員(組ID 2),如果不是則添加行到它。 即添加到表

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

所以我不會插入用戶ID 55,56,57,因爲它已經在表中的MSGID 3.如何在這種情況下

+0

你應該有MsgId和用戶ID的獨特組合索引,以便能夠使用'INSERT IGNORE'或'對重複KEY' –

回答

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 

我正在考慮,你的插入查詢是正確的......

好運!

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;