怎么写啊怎么写

xlh0053 2012-03-07 11:51:43
表CPCL 代号 料号
0001 A
0001 B
0001 C
0001 D
0001 E
0002 A
0002 B
0002 E
0003 A
0003 C
0003 D
0003 E
0004 A
0004 B
0004 C
0004 D
0004 E
0005 D
0005 E
现在要往这个表里面插入数据,要把其他代号的跟0001做比较,补上没有的数据,结果是这样
表CPCL 代号 料号
0001 A
0001 B
0001 C
0001 D
0001 E
0002 A
0002 B
0002 C
0002 D
0002 E
0003 A
0003 B
0003 C
0003 D
0003 E
0004 A
0004 B
0004 C
0004 D
0004 E
0005 A
0005 B
0005 C
0005 D
0005 E
...全文
167 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
xlh0053 2012-03-08
  • 打赏
  • 举报
回复
来人啊来人
叶子 2012-03-07
  • 打赏
  • 举报
回复

declare @表CPCL table (代号 varchar(4),料号 varchar(1))
insert into @表CPCL
select '0001','A' union all
select '0001','B' union all
select '0001','C' union all
select '0001','D' union all
select '0001','E' union all
select '0002','A' union all
select '0002','B' union all
select '0002','E' union all
select '0003','A' union all
select '0003','C' union all
select '0003','D' union all
select '0003','E' union all
select '0004','A' union all
select '0004','B' union all
select '0004','C' union all
select '0004','D' union all
select '0004','E' union all
select '0005','D' union all
select '0005','E'

SELECT * FROM
(select DISTINCT 代号 from @表CPCL) a
CROSS JOIN
(select DISTINCT 料号 from @表CPCL) b

/*
代号 料号
---- ----
0001 A
0001 B
0001 C
0001 D
0001 E
0002 A
0002 B
0002 C
0002 D
0002 E
0003 A
0003 B
0003 C
0003 D
0003 E
0004 A
0004 B
0004 C
0004 D
0004 E
0005 A
0005 B
0005 C
0005 D
0005 E
*/
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fredrickhu 的回复:]

又见到 master..spt_values构造数据的了。
[/Quote]

看到这样的问题就感觉蛋疼
xlh0053 2012-03-07
  • 打赏
  • 举报
回复
期待哦,等你们救我哦
--小F-- 2012-03-07
  • 打赏
  • 举报
回复
又见到 master..spt_values构造数据的了。
勿勿 2012-03-07
  • 打赏
  • 举报
回复
下午做。
xlh0053 2012-03-07
  • 打赏
  • 举报
回复
还有一点就是我是以0001为标准,就是比0001少的记录要添加,但是0001里面没有的就不要添加
比如说0006里面有个F,那么0001-0005就不要添加这条F的记录
xlh0053 2012-03-07
  • 打赏
  • 举报
回复
我是oracle,要用minus。但是不知道为什么我执行后会多出几条没有的数据,就是0001-0005里面都没有的,比如说F这样子,为什么呢
勿勿 2012-03-07
  • 打赏
  • 举报
回复
??? 还有什么问题??
xlh0053 2012-03-07
  • 打赏
  • 举报
回复
sql命令未正确结束
daozijie 2012-03-07
  • 打赏
  • 举报
回复
夜色镇歌 2012-03-07
  • 打赏
  • 举报
回复
叶子 2012-03-07
  • 打赏
  • 举报
回复
--插入
declare @表CPCL table (代号 varchar(4),料号 varchar(1))
insert into @表CPCL
select '0001','A' union all
select '0001','B' union all
select '0001','C' union all
select '0001','D' union all
select '0001','E' union all
select '0002','A' union all
select '0002','B' union all
select '0002','E' union all
select '0003','A' union all
select '0003','C' union all
select '0003','D' union all
select '0003','E' union all
select '0004','A' union all
select '0004','B' union all
select '0004','C' union all
select '0004','D' union all
select '0004','E' union all
select '0005','D' union all
select '0005','E'

INSERT INTO @表CPCL
SELECT * FROM
(select DISTINCT 代号 from @表CPCL) a
CROSS JOIN
(select DISTINCT 料号 from @表CPCL) b
EXCEPT
SELECT * FROM @表CPCL

SELECT * FROM @表CPCL
/*
代号 料号
---- ----
0001 A
0001 B
0001 C
0001 D
0001 E
0002 A
0002 B
0002 E
0003 A
0003 C
0003 D
0003 E
0004 A
0004 B
0004 C
0004 D
0004 E
0005 D
0005 E
0002 C
0002 D
0003 B
0005 A
0005 B
0005 C
*/
喜阳阳 2012-03-07
  • 打赏
  • 举报
回复
declare @表CPCL table (代号 varchar(4),料号 varchar(1))
insert into @表CPCL
select '0001','A' union all
select '0001','B' union all
select '0001','C' union all
select '0001','D' union all
select '0001','E' union all
select '0002','A' union all
select '0002','B' union all
select '0002','E' union all
select '0003','A' union all
select '0003','C' union all
select '0003','D' union all
select '0003','E' union all
select '0004','A' union all
select '0004','B' union all
select '0004','C' union all
select '0004','D' union all
select '0004','E' union all
select '0005','D' union all
select '0005','E'

select * from @表CPCL

insert into @表CPCL
select tb1.代号,tb1.料号
from (
SELECT * FROM
(select DISTINCT 代号 from @表CPCL) a
CROSS JOIN
(select 料号 from @表CPCL where 代号='0001') b) tb1
left join @表CPCL tb2 on tb1.代号=tb2.代号 and tb1.料号=tb2.料号
where tb2.代号 is null

select * from @表CPCL

/*
---添加前
代号 料号
---- ----
0001 A
0001 B
0001 C
0001 D
0001 E
0002 A
0002 B
0002 E
0003 A
0003 C
0003 D
0003 E
0004 A
0004 B
0004 C
0004 D
0004 E
0005 D
0005 E
----添加后
代号 料号
---- ----
0001 A
0001 B
0001 C
0001 D
0001 E
0002 A
0002 B
0002 E
0003 A
0003 C
0003 D
0003 E
0004 A
0004 B
0004 C
0004 D
0004 E
0005 D
0005 E
0002 C
0002 D
0003 B
0005 A
0005 B
0005 C
(19 行受影响)
*/
勿勿 2012-03-07
  • 打赏
  • 举报
回复
8楼的就是插入。 查询了插入前后的数据你都可以对比了。
[Quote=引用 10 楼 xlh0053 的回复:]
我是要向这个表插入数据,不是查询,不是查询
[/Quote]
xlh0053 2012-03-07
  • 打赏
  • 举报
回复
我是要向这个表插入数据,不是查询,不是查询
trunjun 2012-03-07
  • 打赏
  • 举报
回复
引用(τㄗs 阿蒙 o)的。厉害。

create table mytest
(
dcode varchar(10),
lcode varchar(5)
)

insert into mytest(dcode,lcode) values('0001','A')
insert into mytest(dcode,lcode) values('0001','B')
insert into mytest(dcode,lcode) values('0001','C')
insert into mytest(dcode,lcode) values('0001','D')
insert into mytest(dcode,lcode) values('0001','E')
insert into mytest(dcode,lcode) values('0002','A')
insert into mytest(dcode,lcode) values('0002','B')
insert into mytest(dcode,lcode) values('0002','E')
insert into mytest(dcode,lcode) values('0003','A')
insert into mytest(dcode,lcode) values('0003','C')
insert into mytest(dcode,lcode) values('0003','D')
insert into mytest(dcode,lcode) values('0003','E')
insert into mytest(dcode,lcode) values('0004','A')
insert into mytest(dcode,lcode) values('0004','B')
insert into mytest(dcode,lcode) values('0004','C')
insert into mytest(dcode,lcode) values('0004','D')
insert into mytest(dcode,lcode) values('0004','E')
insert into mytest(dcode,lcode) values('0005','D')
insert into mytest(dcode,lcode) values('0005','E')

SELECT * FROM
(select DISTINCT dcode from mytest) a
CROSS JOIN
(select DISTINCT lcode from mytest) b
勿勿 2012-03-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xlh0053 的回复:]
我是要插入,不是查询出来啊
[/Quote]那就更没问题了

--表CPCL 代号 料号
--0001 A
--0001 B
--0001 C
--0001 D
--0001 E
--0002 A
--0002 B
--0002 E
--0003 A
--0003 C
--0003 D
--0003 E
--0004 A
--0004 B
--0004 C
--0004 D
--0004 E
--0005 D
--0005 E

create table CPCL (代号 varchar(20), 料号 varchar(20))
insert into CPCL values('0001','A')
insert into CPCL values('0001' ,'B')
insert into CPCL values('0001' ,'C')
insert into CPCL values('0001' ,'D')
insert into CPCL values('0001' ,'E')
insert into CPCL values('0002','A')
insert into CPCL values('0002', 'B')
insert into CPCL values('0002', 'E')
insert into CPCL values('0003', 'A')
insert into CPCL values('0003' ,'C')
insert into CPCL values('0003', 'D')
insert into CPCL values('0003', 'E')
insert into CPCL values('0004', 'A')
insert into CPCL values('0004', 'B')
insert into CPCL values('0004' ,'C')
insert into CPCL values('0004' ,'D')
insert into CPCL values('0004' ,'E')
insert into CPCL values('0005', 'D')
insert into CPCL values('0005' ,'E')

--现在要往这个表里面插入数据,要把其他代号的跟0001做比较,补上没有的数据,结果是这样
--表CPCL 代号 料号
-- 0001 A
-- 0001 B
-- 0001 C
-- 0001 D
-- 0001 E
-- 0002 A
-- 0002 B
-- 0002 C
-- 0002 D
-- 0002 E
-- 0003 A
-- 0003 B
-- 0003 C
-- 0003 D
-- 0003 E
-- 0004 A
-- 0004 B
-- 0004 C
-- 0004 D
-- 0004 E
-- 0005 A
-- 0005 B
-- 0005 C
-- 0005 D
-- 0005 E
select * from CPCL

insert into CPCL select * from (
select f.代号,f.料号 from (
select * from (
(
(select distinct 代号 from CPCL)w full join (select 料号 from CPCL where 代号='0001')s on 1=1)
))f full join CPCL e on f.代号=e.代号 and f.料号=e.料号 where e.代号 is null
)s

select * from CPCL
drop table CPCL


-------更新前

代号 料号
-------------------- --------------------
0001 A
0001 B
0001 C
0001 D
0001 E
0002 A
0002 B
0002 E
0003 A
0003 C
0003 D
0003 E
0004 A
0004 B
0004 C
0004 D
0004 E
0005 D
0005 E

(19 行受影响)

(6 行受影响)
-----------------更新后

代号 料号
-------------------- --------------------
0001 A
0001 B
0001 C
0001 D
0001 E
0002 A
0002 B
0002 E
0003 A
0003 C
0003 D
0003 E
0004 A
0004 B
0004 C
0004 D
0004 E
0005 D
0005 E
0002 C
0002 D
0003 B
0005 A
0005 B
0005 C

(25 行受影响)


xlh0053 2012-03-07
  • 打赏
  • 举报
回复
我是要插入,不是查询出来啊
勿勿 2012-03-07
  • 打赏
  • 举报
回复
--表CPCL 代号 料号
--0001 A
--0001 B
--0001 C
--0001 D
--0001 E
--0002 A
--0002 B
--0002 E
--0003 A
--0003 C
--0003 D
--0003 E
--0004 A
--0004 B
--0004 C
--0004 D
--0004 E
--0005 D
--0005 E

create table CPCL (代号 varchar(20), 料号 varchar(20))
insert into CPCL values('0001','A')
insert into CPCL values('0001' ,'B')
insert into CPCL values('0001' ,'C')
insert into CPCL values('0001' ,'D')
insert into CPCL values('0001' ,'E')
insert into CPCL values('0002','A')
insert into CPCL values('0002', 'B')
insert into CPCL values('0002', 'E')
insert into CPCL values('0003', 'A')
insert into CPCL values('0003' ,'C')
insert into CPCL values('0003', 'D')
insert into CPCL values('0003', 'E')
insert into CPCL values('0004', 'A')
insert into CPCL values('0004', 'B')
insert into CPCL values('0004' ,'C')
insert into CPCL values('0004' ,'D')
insert into CPCL values('0004' ,'E')
insert into CPCL values('0005', 'D')
insert into CPCL values('0005' ,'E')

--现在要往这个表里面插入数据,要把其他代号的跟0001做比较,补上没有的数据,结果是这样
--表CPCL 代号 料号
-- 0001 A
-- 0001 B
-- 0001 C
-- 0001 D
-- 0001 E
-- 0002 A
-- 0002 B
-- 0002 C
-- 0002 D
-- 0002 E
-- 0003 A
-- 0003 B
-- 0003 C
-- 0003 D
-- 0003 E
-- 0004 A
-- 0004 B
-- 0004 C
-- 0004 D
-- 0004 E
-- 0005 A
-- 0005 B
-- 0005 C
-- 0005 D
-- 0005 E

select * from (
( select distinct 代号 from CPCL)w join (select 料号 from CPCL where 代号='0001')s on 1=1
)
drop table CPCL

代号 料号
-------------------- --------------------
0001 A
0001 B
0001 C
0001 D
0001 E
0002 A
0002 B
0002 C
0002 D
0002 E
0003 A
0003 B
0003 C
0003 D
0003 E
0004 A
0004 B
0004 C
0004 D
0004 E
0005 A
0005 B
0005 C
0005 D
0005 E

(25 行受影响)




ShardingSphere:SpringBoot2+MybatisPlus+读分离+分库分表课程目标快速的掌握读分离+分表的实战,即插即用适用人群IT从业人员,开发人员,Java从业者,互联网从业者,性能调优人群课程简介ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈。它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成,shardingSphere定位为关系型数据库中间件。 Sharding-JDBCSharding-JDBC是Sharding-Sphere的第一个产品,也是Sharding-Sphere的前身,是当当网开源的一个产品。定位为轻量级的Java框架,在Java的JDBC层提供额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。他们均提供标准化的数据分片、读分离、柔性事务和数据治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。Sharding-JDBC可以通过Java,YAML,Spring命名空间和Spring Boot Starter四种方式配置,开发者可根据场景选择适合的配置方式。课程特色 本章节以尽量短的时间,为使用者提供最简单的ShardingSphere的快速入门。课程说明该课程属于系列课程,分为读分离,分库不分表,不分库分表,分库分表,读分离+分库分表共5个回合。本课程属于其中一个回合,请各位小哥哥们注意,课程的标题哦~

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧