Insert

如何使用條件從多個表中插入各種記錄

  • February 9, 2022

我正在創建一個關係數據庫,我目前有 2 個表(StaffStudent

員工看起來像這樣

學生長這樣

我創建了另一個名為Phones

我正在嘗試將這些特定記錄從兩個表中插入:StudentIDand StaffID, Class, and Phone_Models, 到新表中Phones。但是,如果員工的>= 1 ,它應該只Staff根據條件從表中插入記錄。TotalPhonesConfiscated

我已經嘗試過,但這沒有提供正確的表格:

INSERT INTO Phones ( StudentID, 
                    StaffID, 
                    Phone_Model, 
                    Class
                  )
SELECT   StudentID, 
        StaffID, 
        Phone_Model, 
        Class
FROM Student, Staff
WHERE TotalPhonesConfiscated >= 1;

我不知道如何插入記錄,所以看起來每個人都與每個人StaffID匹配StudentID,它似乎適用於Student記錄但不適用於Staff記錄。理論上我想要的應該是這樣的:

我的 SQL 語句中是否缺少某些內容?

理論上我想要的應該是這樣的:

| StudentID | StaffID | Phone_Model | Class |
| --------- | ------- |------------ | ----- |
|  1        | 1       | iPhone7     | S201
|  2        | 3       | iPhone11    | S203

我的 SQL 語句中是否缺少某些內容?

Staff您缺少和之間的關係Student。您需要StaffID intStudent表中有一列。

create table  Staff  (
StaffID int ,
Class varchar(10),
TotalPhonesConfiscated int );

insert into Staff values 
(1,'S201',1),
(2,'S202',0),
(3,'S203',1);


create table  Student  (
StudentID int ,
Phone_Model varchar(20),
StaffID int );

insert into Student values 
(1,'iPhone7',1),
(2,'Samsung',3);


create table  Phones  (
StudentID int,
StaffID int ,
Phone_Model varchar(20),
Class varchar(10));

然後你可以插入數據:

INSERT INTO Phones ( StudentID, 
                    StaffID, 
                    Phone_Model, 
                    Class
                  )
SELECT   StudentID, 
        Student.StaffID, 
        Phone_Model, 
        Class
FROM Student 
INNER JOIN  Staff on Student.StaffID=Staff.StaffID
WHERE TotalPhonesConfiscated >= 1;


select * from Phones;

將導致:

結果:

StudentID StaffID Phone_Model   Class
1           1       iPhone7     S201
2           3       Samsung     S203

引用自:https://dba.stackexchange.com/questions/307217