有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

解决方案 »

  1.   

    --A表中有数据如下:
    --主键码 题名 书号 出版社
    --  1 傲慢与偏见 72042006 东北出版社
    --  2 例慢与偏见 72042006 东北出版社
    --  3 美国企业500家 78100698 西北出版社
    --  4 美国企业500家 78100698 西北出版社
    if OBJECT_ID('A表')is not null
    drop 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           傲慢与偏见                72042006             东北出版社
    3           美国企业500家             78100698             西北出版社(2 行受影响)
      

  2.   

    --A表中有数据如下:
    --主键码 题名 书号 出版社
    --  1 傲慢与偏见 72042006 东北出版社
    --  2 例慢与偏见 72042006 东北出版社
    --  3 美国企业500家 78100698 西北出版社
    --  4 美国企业500家 78100698 西北出版社
    if OBJECT_ID('A表')is not null
    drop 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 null
    drop 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           L044093
    1           2           L041392
    1           3           L041399
    3           4           0008303
    3           4           0008302
    3           5           0008300
    3           5           0008299(7 行受影响)