SQL中临时表的建立方法

来源:互联网 发布:京东自营是正品吗 知乎 编辑:程序博客网 时间:2024/05/21 12:45

使用临时表,可以减少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

原创粉丝点击