[请教]Select into 语句的用法

berrylala 2009-08-11 09:53:24
请问一下,select into可以如下用吗 我在网上查过说是可以用于创建表的备份复件

select a.* into new_orders from new_orders1 a,c_priority b,p_kind c Where a.c_code = b.c_code And a.p_code = c.p_code order by a.requery_date,b.c_priority,c.p_kind desc

运行后 new_orders 有数据,但是相对new_orders1少了一些记录,不知道是哪里出了问题

而运行select a.* into new_orders2 from new_orders1 a 却不会少记录

不知道是不是我的select into的用法有误

多谢了

...全文
348 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
tengjian1981 2009-08-11
  • 打赏
  • 举报
回复
你先看看select的数据集是什么,再看结果


select a.* from new_orders1 a,c_priority b,p_kind c Where a.c_code = b.c_code And a.p_code = c.p_code order by a.requery_date,b.c_priority,c.p_kind desc
华夏小卒 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 berrylala 的回复:]
引用 8 楼 s_111111 的回复:
SQL codeselect a.*into new_ordersfrom new_orders1 aleftjoin c_priority bon a.c_code= b.c_codeleftjoin p_kind con a.p_code= c.p_codeorderby a.requery_date,b.c_priority,c.p_kinddesc

试过了 用left join 数据不会丢失 但不知道是为什么呢(三张表中都没有空值) 能细说一下吗
非常感谢
[/Quote]

因为你加了一个where条件,就是只把3个表里,满足你条件的new_orders1里的记录放到 new_orders

第二个,你是把new_orders1里的所有记录放到 new_orders
。所以不一样啊
SQL77 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 berrylala 的回复:]
引用 3 楼 sql77 的回复:
select a.* into new_orders from new_orders1 a,c_priority b,p_kind c Where a.c_code = b.c_code And a.p_code = c.p_code order by a.requery_date,b.c_priority,c.p_kind desc

你这里不是有连接吗?/应该是数据问题,正确的

请问一下数据问题是什么意思呢 能细说一下吗 多谢了
在new_orders1中有1W条记录 但new_order中却少了30条记录 为什么会少呢(我希望能够实现一条记录都不少的备份到new_orders中去)
而select a.* into new_orders2 from new_orders1 a 却不会少记录呢
多谢了

[/Quote]
用LEFT应该不会少,只会多哦,那个字段会有NULL值吗
gw6328 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lihan6415151528 的回复:]
SQL codeSELECT...INTO 语句

创建制表检索.
语法SELECT field1[, field2[, ...]]INTO新表[IN外部数据库]
FROM源SELECT...INTO 语句可分为以下几个部分:部分 说明
field1, field2 欲复制至新表的字段的名称。
NewTable 欲创建的表的名称。它应遵循标准命名公约.如果 NewTable 的名称与现存¡­
[/Quote]
学习下
berrylala 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 s_111111 的回复:]
SQL codeselect a.*into new_ordersfrom new_orders1 aleftjoin c_priority bon a.c_code= b.c_codeleftjoin p_kind con a.p_code= c.p_codeorderby a.requery_date,b.c_priority,c.p_kinddesc
[/Quote]
试过了 用left join 数据不会丢失 但不知道是为什么呢(三张表中都没有空值) 能细说一下吗
非常感谢
berrylala 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sql77 的回复:]
select a.* into new_orders from new_orders1 a,c_priority b,p_kind c Where a.c_code = b.c_code And a.p_code = c.p_code order by a.requery_date,b.c_priority,c.p_kind desc

你这里不是有连接吗?/应该是数据问题,正确的
[/Quote]
请问一下数据问题是什么意思呢 能细说一下吗 多谢了
在new_orders1中有1W条记录 但new_order中却少了30条记录 为什么会少呢(我希望能够实现一条记录都不少的备份到new_orders中去)
而select a.* into new_orders2 from new_orders1 a 却不会少记录呢
多谢了
s_111111 2009-08-11
  • 打赏
  • 举报
回复

select a.* into new_orders from new_orders1 a left join c_priority b on a.c_code = b.c_code left join p_kind c on a.p_code = c.p_code order by a.requery_date,b.c_priority,c.p_kind desc
昵称被占用了 2009-08-11
  • 打赏
  • 举报
回复
select into的用法没问题,要有问题就是连接的问题
soft_wsx 2009-08-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 soft_wsx 的回复:]
一个从1表取数,一个从2表取数
[/Quote]看错了,不好意思?
语法没有错误,你看一下数据是不是有为空情况,等
昵称被占用了 2009-08-11
  • 打赏
  • 举报
回复
连接了表当然可能少数据了

这样不会少,但可能多了(1对多就可能多)

select a.* into new_orders 
from new_orders1 a left join c_priority b
on a.c_code = b.c_code
left join p_kind c on a.p_code = c.p_code
order by a.requery_date,b.c_priority,c.p_kind desc

soft_wsx 2009-08-11
  • 打赏
  • 举报
回复
一个从1表取数,一个从2表取数
SQL77 2009-08-11
  • 打赏
  • 举报
回复
select a.* into new_orders from new_orders1 a,c_priority b,p_kind c Where a.c_code = b.c_code And a.p_code = c.p_code order by a.requery_date,b.c_priority,c.p_kind desc

你这里不是有连接吗?/应该是数据问题,正确的
lihan6415151528 2009-08-11
  • 打赏
  • 举报
回复


SELECT...INTO 语句

创建制表检索.
语法

SELECT field1[, field2[, ...]]INTO新表[IN外部数据库]
FROM源

SELECT...INTO 语句可分为以下几个部分:部分 说明
field1, field2 欲复制至新表的字段的名称。
NewTable 欲创建的表的名称。它应遵循标准命名公约.如果 NewTable 的名称与现存表的名称相同时,将会发生可以捕捉到的错误。
Externaldatabase 进入外部数据库的路径。有关路径的描述,请参阅 IN 子句。
source 从其中选择记录的现存表的名称。它可以是单一表或多重表或一个查询。
soft_wsx 2009-08-11
  • 打赏
  • 举报
回复
select a.* into new_orders from new_orders1 a,c_priority b,p_kind c Where a.c_code = b.c_code And a.p_code = c.p_code order by a.requery_date,b.c_priority,c.p_kind desc


select a.* into new_orders2 from new_orders1 a


条件都不一样啊!
berrylala 2009-08-11
  • 打赏
  • 举报
回复
哦 多谢各位
知道原因了 数据从Excel导入SQL Server的时候 出了些问题 导致 a.c_code数目多于b.c_code a.p_code数目多于c.p_code(本来应该数目应该是一样多的) 所以用left join不会丢失
振乾 2009-08-11
  • 打赏
  • 举报
回复
帮顶!

34,590

社区成员

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

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