mySql在连接条件下插入

时间:2014-08-04 08:29:37

标签: mysql

我们有两个这种结构的表:

table_user:id,name

table_user_groups:user_id,group_id

某些用户没有组,因此他们在table_user_groups中没有条目。 我想确定这些用户并为他们插入默认group_id。 我想我必须使用带有JOIN条件的INSERT查询。 任何建议。 提前谢谢。

3 个答案:

答案 0 :(得分:0)

用于获取所需用户的Select语句就是那个,而下面是插入的光标。

    SELECT A.id FROM table_user A
    LEFT OUTER JOIN table_user_groups B ON A.id = B.user_id
    WHERE B.user_id = NULL


DECLARE @userid int

DECLARE cursor CURSOR FOR 
SELECT A.id FROM table_user A
    LEFT OUTER JOIN table_user_groups B ON A.id = B.user_id
    WHERE B.user_id = NULL

OPEN cursor

FETCH NEXT FROM cursor 
INTO @userid

WHILE @@FETCH_STATUS = 0
BEGIN
    Insert into table_user_groups(user_id,group_id)  VALUES (userid, 'DEFAULTUSERID')
END
CLOSE vendor_cursor;

DEALLOCATE vendor_cursor;

答案 1 :(得分:0)

尝试这样的事情:

> INSERT INTO table_user_groups(user_id, group_id)
SELECT tu.id, [DEFAULT ID]
FROM table_user tu
LEFT JOIN table_user_groups tug ON tug.user_id = tu.id
WHERE tug.id IS NULL;

其中[DEFAULT ID]是您希望用作此用户默认值的值。

答案 2 :(得分:-1)

<强> UNTESTED

使用它:

  INSERT INTO table_user_group
 (SELECT id,'yourdefaultID' FROM table_user WHERE id
 NOT IN (SELECT user_id FROM table_user_groups))