SQL中临时表的建立方法

使用临时表,可以减少SQL文的执行次数,提高程序的执行效率。

 

1. 物理临时表

与数据表一样,在数据库建立的时候建立,长期存在数据库中。程序在运行的时候,临时将数据放入其中,在检查或者修改完成之后,将其中的数据转移到其他数据表中。程序结束之后,删除其中的数据。

 

2. 连接式临时表

与数据库建立连接的同时建立该临时表,之后的作用与【物理临时表】一致。在连接断开之后,数据库系统删除该临时表。

 

3. 笛卡尔乘积式临时表

如果操作的数据是两个表中的数据的笛卡尔乘积,可以在SQL中通过两个表的内联,建立这样的临时表数据。

 

SELECT * FROM

( SELECT 店铺CODE, 商品CODE

  FROM T_店铺表, T_商品表

  WHERE 店铺CODE IN ('店铺CODE1', '店铺CODE2')

  AND 商品CODE IN ('商品CODE1', '商品CODE2')

) AS T_店铺商品

LEFT JOIN T_其他表

  ON T_其他表.店铺CODE = T_店铺商品.店铺CODE

  AND T_其他表.商品CODE = T_店铺商品.商品CODE

 

4. 内联式临时表

SQL中将数据用查询固定值的方式内联形成临时表,然后用该临时表联结其他数据表。

 

SELECT T_企划_商品.商品CODE, T_企划_商品.企画番号, T_企划_商品.企画開始日, T_企划_商品.企画終了日

FROM

(

  SELECT '00000000000001' AS 商品CODE, '20080515' AS 订货开始日, '20080519' AS 订货结束日 UNION ALL

  SELECT '00000000000002' AS 商品CODE, '20080516' AS 订货开始日, '20080520' AS 订货结束日 UNION ALL

  SELECT '00000000000003' AS 商品CODE, '20080515' AS 订货开始日, '20080521' AS 订货结束日 UNION ALL

  SELECT '00000000000004' AS 商品CODE, '20080514' AS 订货开始日, '20080522' AS 订货结束日 UNION ALL

  SELECT '00000000000005' AS 商品CODE, '20080513' AS 订货开始日, '20080523' AS 订货结束日 UNION ALL

  SELECT '00000000000006' AS 商品CODE, '20080512' AS 订货开始日, '20080524' AS 订货结束日

  ) AS CHECKDATA

INNER JOIN T_企划_商品

 ON T_企划_商品.商品CODE = CHECKDATA.商品CODE

 AND T_企划_商品.订货开始日 <= CHECKDATA.订货结束日

 AND T_企划_商品.订货结束日 >= CHECKDATA.订货开始日

ORDER BY M_企画_商品.商品CODE

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值