2016-02-17 41 views
1

可以使用select語句中的值在一個表中插入多行?
一個例子:使用select語句中的值將多行插入某個表中

INSERT INTO SomeTable (UserID, ModuleID, ModuleRights) VALUES 
     (u.UserId, 1, 15), 
     (u.UserId, 2, 1), 
     (u.UserId, 4, 3), 
     (u.UserId, 8, 7) 
SELECT * FROM Users u 
+0

[SQL服務器,請選擇到現有的表(的可能的複製http://stackoverflow.com/questions/4101739/sql-server-select-into-existing-表) – CiucaS

回答

5

是的,但你需要,你如何做到這一點要小心。在這種情況下,它似乎你想要一個cross join

INSERT INTO SomeTable (UserID, ModuleID, ModuleRights) 
    SELECT u.UserId, v.ModuleID, v.ModuleRights 
    FROM Users u CROSS JOIN 
     (VALUES (1, 15), 
       (2, 1), 
       (4, 3), 
       (8, 7) 
     ) v(ModuleID, ModuleRights); 
+0

最佳答案。非常感謝。 –

0
INSERT INTO SomeTable (UserID, ModuleID, ModuleRights) 
SELECT u.UserID, u.ModuleID, u.ModuleRights FROM Users u; 

如果您ModuleIDModuleRights不是users表的一部分,然後插入空值或虛值並更換所需要的條件。

-1

插入使用選擇statment多行

insert into tbl_teacher 
    (fName, 
    lName, 
    email, 
    cNo) 
    select s.fName, 
      s.lName, 
      s.email, 
      s.cNo 
    from tbl_student s 
+0

Downvoted,因爲這與提前16分鐘提交的vtuhtan答案太相似。答案也格式不好,但我不會爲此而低估。 –

相關問題