引用来自SQL脚本的其他SQL脚本?

问题描述:

我正在将MS访问查询转换为SQL查询,并注意到在访问查询中它似乎正在将另一个查询连接到其他表。所以,我环顾四周,好像是查询几乎使查询看起来更干净,而不需要有各种各样的子查询在同一脚本引用来自SQL脚本的其他SQL脚本?

喜欢的东西

FROM [query name] INNER JOIN [some other table]

有没有这样的事情在SQL?

有没有这样的事情在SQL?

是的。在SQL你可能会使用WITH子句:

WITH someData AS 
(
    select a.col1, b.col2 
    from tableA a join tableB b 
    on (a.someKey = b.someKey) 
), 
... 
select data1.col1, data1.col2, data2.col3 
from someData data1 join tableC data2 
on (data1.col1 = data2.anotherKey) 
where ... 

意见都OK了,但是另一个db对象跟踪时,如果使用一个物化视图,需要担心刷新快照表,等我的建议在可能的情况下使用WITH和大量的注释。

编辑:如果你发现自己问的数据库一遍又一遍的相同的问题,然后视图(或席位视图)会更合适。但否则,请在查询中保留逻辑。

+0

WITH正是我所需要的。 – MxyL 2011-03-30 14:27:53

您可能正在寻找VIEWS.

视图基本是SELECT查询的存储版本。它允许您引用结果集,而无需每次重写查询。

您可以创建一个VIEW作为查询,然后在另一个查询中引用该视图。

CREATE VIEW <viewname> AS <SELECT STATEMENT> 

然后

SELECT * FROM <viewname> INNER JOIN <other table> 

是。他们被称为意见。

您可以创建一个像

CREATE VIEW vw_some_query AS 
SELECT * FROM 
table_a LEFT INNER JOIN table_b ON table_a.id = table_b.id2 

视图,则你可以写一个像选择:

SELECT * FROM vw_some_query LEFT INNER JOIN table_c ON vw_some_query.id = table_c.id3