首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

这样一条语句

2012-03-27 
求助这样一条语句有A表和B表,A表中有字段主键码,题名,书号,出版社等;B表中有字段主键码,子键码,条码号等。A

求助这样一条语句
有A表和B表,A表中有字段主键码,题名,书号,出版社等;B表中有字段主键码,子键码,条码号等。
A表中有数据如下:
主键码 题名 书号 出版社
  1 傲慢与偏见 72042006 东北出版社
  2 例慢与偏见 72042006 东北出版社
  3 美国企业500家 78100698 西北出版社
  4 美国企业500家 78100698 西北出版社
B表中有数据如下:
主键码 子键码 条码号
  1 1 L044093
  1 2 L041392
  2 3 L041399
  3 4 0008303
  3 4 0008302
  4 5 0008300
  4 5 0008299
要求处理后的结果:
A表中有数据如下:
主键码 题名 书号 出版社
  1 傲慢与偏见 72042006 东北出版社
  3 美国企业500家 78100698 西北出版社
B表中有数据如下:
主键码 子键码 条码号
  1 1 L044093
  1 2 L041392
  1 3 L041399
  3 4 0008303
  3 4 0008302
  3 5 0008300
  3 5 0008299



[解决办法]

SQL code
--A表中有数据如下:--主键码 题名 书号 出版社--  1 傲慢与偏见 72042006 东北出版社--  2 例慢与偏见 72042006 东北出版社--  3 美国企业500家 78100698 西北出版社--  4 美国企业500家 78100698 西北出版社if OBJECT_ID('A表')is not nulldrop table A表go create  table A表(主键码 int, 题名 varchar(20),书号 varchar(20), 出版社 varchar(20))insert into A表 values(1, '傲慢与偏见' ,'72042006', '东北出版社')insert into A表 values(2, '例慢与偏见' ,'72042006' ,'东北出版社')insert into A表 values(3, '美国企业500家' ,'78100698', '西北出版社')insert into A表 values(4, '美国企业500家', '78100698', '西北出版社')--要求处理后的结果:--A表中有数据如下:--  主键码 题名        书号      出版社--  1    傲慢与偏见    72042006 东北出版社--  3    美国企业500家 78100698 西北出版社;with ct as (select * from A表) select * from ct c where 主键码=(select min(主键码) from ct where c.书号=书号)   -- (1 行受影响)--主键码         题名                   书号                   出版社------------- -------------------- -------------------- ----------------------1           傲慢与偏见                72042006             东北出版社--3           美国企业500家             78100698             西北出版社--(2 行受影响)--B表中有数据如下:--主键码 子键码 条码号--  1 1 L044093--  1 2 L041392--  2 3 L041399--  3 4 0008303--  3 4 0008302--  4 5 0008300--  4 5 0008299if OBJECT_ID('B表')is not nulldrop table B表go create  table B表(主键码  int,子键码 int, 条码号  varchar(20))insert into B表 values(1, 1 ,'L044093')insert into B表 values(1, 2 ,'L041392')insert into B表 values(2, 3 ,'L041399')insert into B表 values(3 ,4 ,'0008303')insert into B表 values(3, 4 ,'0008302')insert into B表 values(4, 5, '0008300')insert into B表 values(4 ,5, '0008299')--B表中有数据如下:--主键码 子键码 条码号--  1 1 L044093--  1 2 L041392--  1 3 L041399--  3 4 0008303--  3 4 0008302--  3 5 0008300--  3 5 0008299  select (select min(主键码) from B表 where   substring(条码号,1,3)=substring(b.条码号,1,3) ),子键码,条码号 from B表  b (1 行受影响)(1 行受影响)(1 行受影响)(1 行受影响)主键码         题名                   书号                   出版社----------- -------------------- -------------------- --------------------1           傲慢与偏见                72042006             东北出版社3           美国企业500家             78100698             西北出版社(2 行受影响)(1 行受影响)(1 行受影响)(1 行受影响)(1 行受影响)(1 行受影响)(1 行受影响)(1 行受影响)            子键码         条码号----------- ----------- --------------------1           1           L0440931           2           L0413921           3           L0413993           4           00083033           4           00083023           5           00083003           5           0008299(7 行受影响) 

热点排行