有二张表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的记录不变。
文章有错误,我要报错
到论坛交流、讨论
对该文章进行评论
进入VIP视频站下载视频
-热门IT就业培训班: 第一个题有二张表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的记录
CREATE TABLE Table_A
(
NAME VARCHAR(20),
AGE INT
);
GOCREATE TABLE Table_B
(
NAME VARCHAR(20),
GRADE INT
);
GO
--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);
GO
现在要用一条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);不明白的地方就是这条语句如果把SELECT AGE FROM Table_A WHERE Table_A.NAME=Table_B.NAME 单独运行的话会把错,而跟update后边就不会出错,而且还会更新四行,其中两行为null,哪位大位解释一下,不胜感激
A表中有三条记录,B表中有四条记录。问现在要用一条SQL语句根据A表中AGE字段把B表中的GRADE字段进行更新。条件为A表NAME和B表NAME相等。同样。B表中与A表没有相同NAME的记录不变。
文章有错误,我要报错
到论坛交流、讨论
对该文章进行评论
进入VIP视频站下载视频
-热门IT就业培训班: 第一个题有二张表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的记录
CREATE TABLE Table_A
(
NAME VARCHAR(20),
AGE INT
);
GOCREATE TABLE Table_B
(
NAME VARCHAR(20),
GRADE INT
);
GO
--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);
GO
现在要用一条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);不明白的地方就是这条语句如果把SELECT AGE FROM Table_A WHERE Table_A.NAME=Table_B.NAME 单独运行的话会把错,而跟update后边就不会出错,而且还会更新四行,其中两行为null,哪位大位解释一下,不胜感激
SET GRADE=Table_A.AGE
FROM Table_A
WHERE Table_A.NAME=Table_B.NAMESELECT * FROM TABLE_B
/*
NAME GRADE
-------------------- -----------
AName1 20
BName1 19
AName3 22
BName2 24(所影响的行数为 4 行)
*/