天天看点

DBA面试

 第一个题有二张表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,如需转载请自行联系原作者