Исключение результатов и выполнение вставки с запросом SQL - PullRequest
0 голосов
/ 20 января 2012

Таблица

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

Здесь есть таблица a и group таблица. Первичные ключи 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 я хочу проверить, есть ли какие-либо члены группы (groupID 2), связанные в таблице a, если нет, то добавьте в нее строку. т.е. добавить в таблицу

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

Поэтому я не буду вставлять идентификатор пользователя 55,56,57, поскольку он уже находится в таблице a для msgid 3. Как выполнить запрос для этого сценария

Ответы [ 2 ]

0 голосов
/ 20 января 2012

Это на самом деле довольно просто:

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;
0 голосов
/ 20 января 2012

Попробуйте код ниже

 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

Я считаю, что ваш запрос на вставку правильный ...

Удачи !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...