我有 2 个表,一个包含人员,一个包含凭证,我需要为每个人分配一个凭证,并使用分配给它的人的 ID 更新凭证表。由于没有共同的键来加入表,我不能使用递归 CTE,我总是尽量避免使用循环,但我想不出任何其他方式。
有没有办法不使用循环?理想情况下在单个语句中。
这将给出一个表示例(我使用的是 SQL Server 2008 R2)
CREATE TABLE Persons (ID INT IDENTITY(1,1),
FirstName VARCHAR(30),
LastName VARCHAR(50),
Voucher CHAR(5))
CREATE TABLE Vouchers (Voucher CHAR(5),
Assigned INT)
INSERT INTO Persons (FirstName,LastName) VALUES ('Rob','Smith')
INSERT INTO Persons (FirstName,LastName) VALUES ('Alan','Brown')
INSERT INTO Persons (FirstName,LastName) VALUES ('John','Plant')
INSERT INTO Persons (FirstName,LastName) VALUES ('Mike','Black')
INSERT INTO Persons (FirstName,LastName) VALUES ('Steve','Green')
INSERT INTO Vouchers (Voucher) VALUES ('FEWPN')
INSERT INTO Vouchers (Voucher) VALUES ('ROPIW')
INSERT INTO Vouchers (Voucher) VALUES ('NGLCE')
INSERT INTO Vouchers (Voucher) VALUES ('WEKFE')
INSERT INTO Vouchers (Voucher) VALUES ('POIAP')