第一個題有二張表A,B。A表有二個列。NAME VARCHAR(20)AGE INT 。B表也有二列 NAME VARCHAR(20)GRADE INT
A表中有三條記錄,B表中有四條記錄。問現在要用一條SQL語句根據A表中AGE字段把B表中的GRADE字段進行更新。條件為A表NAME和B表NAME相等。同樣。B表中與A表沒有相同NAME的記錄不變。
MSSQL2000
第二問題。一個表中有二個列就以上A表為例。現在A表中有多例相同的記錄。現在要把相同的記錄删除隻留一條。沒有相同記錄的記錄不變。A表中可能四條xiao的記錄。二條li的記錄。一條zhang的記錄
IF OBJECT_ID('Table_A', 'U') IS NOT NULL
DROP TABLE dbo.sample_table
GO
CREATE TABLE Table_A
(
NAME VARCHAR(20),
AGE INT
);
IF OBJECT_ID('Table_B', 'U') IS NOT NULL
DROP TABLE Table_B
CREATE TABLE Table_B
GRADE INT
--Insert the data into Table_A
INSERT INTO Table_A VALUES('AName1',20);
INSERT INTO Table_A VALUES('AName2',21);
INSERT INTO Table_A VALUES('AName3',22);
--Insert the data into Table_B
INSERT INTO Table_B VALUES('AName1',22);
INSERT INTO Table_B VALUES('BName1',19);
INSERT INTO Table_B VALUES('AName3',18);
INSERT INTO Table_B VALUES('BName2',24);
--type the data
print 'Table_A:';
SELECT*FROM Table_A;
print 'Table_B:';
SELECT*FROM Table_B;
/*
現在要用一條SQL語句根據A表中AGE字段把B表中的GRADE字段進行更新。
條件為A表NAME和B表NAME相等。同樣。B表中與A表沒有相同NAME的記錄不變。
*/
UPDATE Table_B
SET GRADE=(SELECT AGE FROM Table_A WHERE Table_A.NAME=Table_B.NAME)
WHERE Table_B.NAME IN(SELECT Table_A.NAME FROM Table_A,Table_B WHERE Table_A.NAME=Table_B.NAME);
--display the data of Table_B
第二問題。一個表中有二個列就以上A表為例。現在A表中有多例相同的記錄。現在要把相同的記錄删除隻留一條。
沒有相同記錄的記錄不變。A表中可能四條xiao的記錄。二條li的記錄。一條zhang的記錄
--Before inserting the data into Table_A
INSERT INTO Table_A VALUES('zhang',18);
INSERT INTO Table_A VALUES('xiao',19);
INSERT INTO Table_A VALUES('EricHu',22);
--Display the data of Table_A
PRINT 'Table_A';
--implementint the require....
SELECT DISTINCT*INTO #Temp_Table FROM Table_A
SELECT*FROM #Temp_Table;
DELETE FROM Table_A;
INSERT INTO Table_A SELECT*FROM #Temp_Table;
DROP TABLE #Temp_Table;
DROP TABLE Table_A;
DROP TABLE Table_B;
本文轉自yonghu86 51CTO部落格,原文連結:http://blog.51cto.com/yonghu/1321440,如需轉載請自行聯系原作者