我有一个书桌,下面有几列和几行......
稍后我通过将pub_id ....与以下查询分组来过滤2000/01/01和2000/12/01之间的pubdate列
select pub_id,max(pubdate) as max_date
from book
group by pub_id
having MAX(pubdate) between '2000/01/01' and '2000/12/01'
结果如下:
现在我想将过滤后的数据转移到新的book1中,我尝试了以下查询,但它以错误结束!!!!
select * into book1
from
(
select pub_id,max(pubdate) as max_date
from book
group by pub_id
having MAX(pubdate) between '2000/01/01' and '2000/12/01'
)
我尝试了以下内容并且正在运行
insert into existing_table
(
select pub_id,max(pubdate) as max_date
from book
group by pub_id
having MAX(pubdate) between '2000/01/01' and '2000/12/01'
)
但我想将过滤后的数据动态推送到新表中? 所以请在插入查询中纠正我的错误...... 在此先感谢!!!!!
答案 0 :(得分:1)
提供别名
select * into book1
from
(
select pub_id,max(pubdate) as max_date
from book
group by pub_id
having MAX(pubdate) between '2000/01/01' and '2000/12/01'
) x
答案 1 :(得分:1)
别名可用于替换列名或表名。
在您的情况下,需要表别名,因为sql引擎处理基于集合的逻辑。如果你没有为你定义的select语句添加一个表别名,那么即使你的select语句有效,sql引擎也不会知道它应该引用哪个集合。
简单地设置别名就会让sql引擎识别哪个表(就像一个唯一的ID)来引用。
例如,简单语句" select * from TableName&#34 ;, TableName的工作方式类似于表别名或要引用的标识。
(1)如果你只是把#34; Select * from(Select * from TableName)"
(2)如果你把" Select * from(Select * from TableName)x"。
希望这可以解释你的怀疑。