日期:2014-05-16  浏览次数:20324 次

子查询因子化

子查询因子化 也被称为 公共表表达式(comman tableexpression ),

我们通过使用WITH语句将查询分解为易于理解的块。

举一个简单的例子:

WITH TEST1 AS(
SELECT * FROM alias
WHERE DEST_URL  ='/a-page'
),
test2 AS(
SELECT * FROM alias
WHERE DEST_URL  = '/b-page'
)
SELECT * FROM TEST1,test2;

?

注意如果定义多个with子句,子句之间必须用逗号分隔,而且必须在子句后面接上查询语句,

而且查询语句必须全部包含你所定义的with子句。否则的话要报错。

?

这样的话,虽然sql代码量没怎么变化,但是可读性和可维护性大大增强了。

?