我想用我的SQL代碼做兩件事。我希望它從另一個列(工作表)中的另一列(小時)複製數據,並將其放入另一個表(Employee-表)中的新列(numHours)中。但是,我希望它使用每個員工ID(eid)工作小時的總和,然後將該總和放入新列。更新表列使用sum()
這是我寫的,但有兩件事是錯誤的。當我執行select語句時,每個員工ID都有相同的工作小時數。當我運行整個聲明時,出現此錯誤
子查詢返回的值超過1個。當子查詢遵循=,!=,<,< =,>,> =或當子查詢用作表達式時,這是不允許的。 該聲明已被終止。
UPDATE Employee
SET numHours= (SELECT sum(w.hours) AS totalHours From works w, Employee e WHERE
numHours IS NULL AND e.eid = w.eid Group by w.eid);
這是我的表
CREATE TABLE Employee(
eid INT,
ename VARCHAR(30),
age INT,
salary INT,
CONSTRAINT Pk_key_eid PRIMARY KEY (eid)
);
CREATE TABLE Department(
did INT,
dname VARCHAR(30),
budget int,
managerid INT,
CONSTRAINT Validate_managerid CHECK(managerid < 1000),
CONSTRAINT Pk_key_did PRIMARY KEY (did)
);
CREATE TABLE Works(
eid INT,
did INT,
hours INT,
CONSTRAINT fk_key_eid FOREIGN KEY (eid) REFERENCES Employee (eid) ON DELETE CASCADE,
CONSTRAINT fk_key_Did FOREIGN KEY (did) REFERENCES Department (did) ON DELETE CASCADE
);
我將如何正確的代碼呢?
用您正在使用的數據庫標記您的問題。 –