我从两张表中查询得出的结果集插入另一张表中 我想剔除重复的数据 只插入一条记录 可以?

时间:2022-01-09 00:47:13
insert into fhqd(fhqdbh,fhrxm,shrxm,shrdh,zdz,sxhh,jydbh,hwmc,jianshu,bxe,zyf,yingjje,xianjin,qiankuan,yuejie,shangfu,jsfs,sqje,dshk,)  select  jydxx.fhrxm,jydxx.shrxm,jydxx.shrdh,jydxx.zdz,jydxx.sxhh,hwxx.jydbh,hwxx.hwmc,hwxx.jianshu,hwxx.bxe,hwxx.zyf,jydxx.yingjje,jydxx.xianjin,jydxx.qiankuan,jydxx.yuejie,jydxx.shangfu,jydxx.jsfs,jydxx.sqje,jydxx.dshk from hwxx,jydxx  where hwxx.jydbh=jydxx.jydbh 

我从jydxx 和hwxx 两张表中查询个别字段 插入fhqd表中  能不能剔除重复的数据再插入???
如我用 select  jydxx.fhrxm,jydxx.shrxm,jydxx.shrdh,jydxx.zdz,jydxx.sxhh,hwxx.jydbh,hwxx.hwmc,hwxx.jianshu,hwxx.bxe,hwxx.zyf,jydxx.yingjje,jydxx.xianjin,jydxx.qiankuan,jydxx.yuejie,jydxx.shangfu,jydxx.jsfs,jydxx.sqje,jydxx.dshk from hwxx,jydxx  where hwxx.jydbh=jydxx.jydbh  查询出这么两条记录

jydbh  hwmc  jianshu  dshk  
001     A      1      200
001     B      2      200
这两条记录其实是同一单   只是一对多的关系  我要插入到fhqd 中  只需插入
001     A      1       200
        B      2        

即可  可以做到? 

9 个解决方案

#1


CREATE TABLE [TB] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[ITEM] [int] NULL ,
[NOTE] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_TB] PRIMARY KEY  CLUSTERED 
(
[ID]
)  ON [PRIMARY] 
) ON [PRIMARY]
GO




INSERT INTO TB (ITEM, NOTE) SELECT 3,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 3,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 4,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 5,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 5,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 6,'XX'

SELECT * FROM TB

/*-----------------------
3 XX
3 XX
4 XX
5 XX
5 XX
6 XX
*/
SELECT
    ITEM=CASE WHEN ID=(
                          SELECT MIN(ID)
                          FROM TB
                          WHERE ITEM=A.ITEM
                      )
               THEN RTRIM(ITEM) ELSE '' END,
    NOTE
FROM TB AS A
ORDER BY ID

/*
ITEM         NOTE
------------ --------------------
3            XX
             XX
4            XX
5            XX
             XX
6            XX

#2


还是不懂啊   HEROWANG   能帮我写出来?

#3


对于重复的数据,用null填充就行了

#4


兄弟 帮帮忙  我对sql不熟  帮忙写出来  我试试

#5


交给HEROWANG  了,俺路过帮顶..

#6


帮帮忙拉 我对sql不是很熟  
SELECT
    ITEM=CASE WHEN ID=(
                          SELECT MIN(ID)
                          FROM TB
                          WHERE ITEM=A.ITEM
                      )
               THEN RTRIM(ITEM) ELSE '' END,
    NOTE
FROM TB AS A
ORDER BY ID

没用过  今天第一次见

#7


实在不行就插入后再用变量更新为'',方法不只一种.

#8


帮顶

#9


方法不止一种 我连一种都没学会   教教我吧   htl258 

#1


CREATE TABLE [TB] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[ITEM] [int] NULL ,
[NOTE] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK_TB] PRIMARY KEY  CLUSTERED 
(
[ID]
)  ON [PRIMARY] 
) ON [PRIMARY]
GO




INSERT INTO TB (ITEM, NOTE) SELECT 3,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 3,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 4,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 5,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 5,'XX'
INSERT INTO TB (ITEM, NOTE) SELECT 6,'XX'

SELECT * FROM TB

/*-----------------------
3 XX
3 XX
4 XX
5 XX
5 XX
6 XX
*/
SELECT
    ITEM=CASE WHEN ID=(
                          SELECT MIN(ID)
                          FROM TB
                          WHERE ITEM=A.ITEM
                      )
               THEN RTRIM(ITEM) ELSE '' END,
    NOTE
FROM TB AS A
ORDER BY ID

/*
ITEM         NOTE
------------ --------------------
3            XX
             XX
4            XX
5            XX
             XX
6            XX

#2


还是不懂啊   HEROWANG   能帮我写出来?

#3


对于重复的数据,用null填充就行了

#4


兄弟 帮帮忙  我对sql不熟  帮忙写出来  我试试

#5


交给HEROWANG  了,俺路过帮顶..

#6


帮帮忙拉 我对sql不是很熟  
SELECT
    ITEM=CASE WHEN ID=(
                          SELECT MIN(ID)
                          FROM TB
                          WHERE ITEM=A.ITEM
                      )
               THEN RTRIM(ITEM) ELSE '' END,
    NOTE
FROM TB AS A
ORDER BY ID

没用过  今天第一次见

#7


实在不行就插入后再用变量更新为'',方法不只一种.

#8


帮顶

#9


方法不止一种 我连一种都没学会   教教我吧   htl258