하나의 삽입물 만 사용하여 사용자 테이블을 채워야합니다. 표에 4 열이 있습니다.tsql 스크립트에서 삽입 횟수를 줄이는 방법은 무엇입니까?
FirstName LastName Password Email
이제는 두 개의 삽입 만 사용하여 수행 할 수 있습니다. 먼저 FirstName 및 LastName을 삽입하고 두 번째로 이름에 따라 암호 및 전자 메일을 생성합니다. 그래서, 첫 삽입 후 나는 Passwords 칼럼과 Email 칼럼을 NULL로 채운다. 그래서 테이블에서 불필요한 행을 삭제해야합니다. 아래
코드 :
DROP TABLE Users
CREATE TABLE Users(
FirstName nvarchar(10) ,
LastName nvarchar(10),
Password nvarchar(128),
Email nvarchar(30),
)
INSERT INTO Users (FirstName, LastName) VALUES ('Adams','Armstrong'),
('John','Barnes'),
('Mark','Barnetty'),
('Mike','Ra'),
('Harry','Radley'),
('Nick','Kade'),
('Brian','Kael'),
('Lea','Fahim'),
('Julia','Dacey'),
('Anna','Octavio'),
('Kate','Yale')
INSERT INTO Users (FirstName, LastName, Password, Email)
SELECT FirstName, LastName, Password, Email =
CASE
WHEN Email = 0 THEN
LOWER(LEFT(FirstName,1) + LastName) + '@hotmail.com'
WHEN Email = 1 THEN
LOWER(LEFT(FirstName,1) + LastName) + '@gmail.com'
WHEN Email = 2 THEN
LOWER(LEFT(FirstName,1) + LastName) + '@mail.ru'
END
FROM (SELECT FirstName, LastName, REPLACE(LOWER(CONVERT(NVARCHAR(128), NEWID())), '-', '') as Password,
CAST(RAND(CHECKSUM(NEWID())) * 3 as INT) as Email from Users) as random
DELETE FROM Users WHERE Password IS NULL and Email IS NULL
SELECT * FROM Users
어떻게 하나의 인서트를 사용하여 사용자 테이블을 채우기는 무엇입니까?
P. 이 테이블은 이미 다른 테이블의 임시 테이블입니다.
이름 값의 출처는 무엇입니까? INSERT 문에 항상 하드 코딩하거나 다른 테이블이나 데이터 소스에서 선택합니까? –
그래서 사용자가 'hotmail.com'을 얻는다면'gmail.com'이나'mail.ru'는 완전히 변화에 달렸습니까? – GuidoG
두 삽입을 한 다음 두 행 중 하나를 삭제하는 이유는 무엇입니까? 기괴한. UPDATE를 사용하여 _existing_ 행에 이메일/비밀번호를 추가하십시오! 그러나 전자 메일 값이 입력 매개 변수 (예 : @email)에서 오는 경우 CASE 문을 원래 INSERT에 그대로 넣고 매개 변수를 사용하여 수행 할 작업을 결정할 수 있습니다. – ADyson