插入时没有" IN"或" EXISTS"

时间:2014-07-09 14:50:26

标签: mysql sql

我有一个名为UserGroups的表,其中包含" USER_ID"这是" User Table"中的主键。和" GROUP_ID"这是" Group Table"中的主键。

___________________
|User_ID | Group_ID|
  • 用户可以属于多个群组

但是,我的查询是尝试将用户(ID为#34; 1")放入用户尚未进入的所有组中。规则是不使用" IN& #34;或者"存在"子句。

我尝试了一个插入语句,但我想不管怎样插入而不使用" IN"或" EXISTS"子句。

INSERT into UserGroups
VALUES(1,*)

1 个答案:

答案 0 :(得分:2)

SQL Server的解决方案

INSERT INTO UserGroups (UserID, GroupID)
SELECT 1, GroupID
FROM Groups
EXCEPT
SELECT UserID, GroupID
FROM UserGroups

我认为对于Oracle

INSERT INTO UserGroups (UserID, GroupID)
SELECT 1, GroupID
FROM Groups
MINUS
SELECT UserID, GroupID
FROM UserGroups

和MySQL

INSERT INTO UserGroups (UserID, GroupID)
SELECT 1, GroupID
FROM Groups
WHERE GroupID NOT IN (SELECT GroupID FROM UserGroups WHERE UserID = 1)

没有IN

INSERT INTO UserGroups (UserID, GroupID)
SELECT 1, GroupID
FROM Groups
LEFT JOIN UserGroups 
ON UserGroups.GroupID = Groups.GroupID
AND UserGroups.UserID = 1
WHERE UserGroup.GroupID IS NULL