我们有两个这种结构的表:
table_user:id,name
table_user_groups:user_id,group_id
某些用户没有组,因此他们在table_user_groups中没有条目。
我想确定这些用户并为他们插入默认group_id
。
我想我必须使用带有JOIN条件的INSERT查询。
任何建议。
提前谢谢。
答案 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))