从SQL脚本引用其他SQL脚本?

时间:2011-03-25 19:05:58

标签: sql plsql

我目前正在将MS访问查询转换为SQL查询,并注意到在访问查询中它似乎正在将另一个查询加入到其他表中。所以我环顾四周,看起来这个查询几乎使查询看起来更干净,而不需要在同一个脚本中有各种子查询

这样的东西

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

SQL中有这样的东西吗?

4 个答案:

答案 0 :(得分:4)

您可能正在寻找VIEWS.

视图基本上是SELECT查询的存储版本。它允许您在不重写查询的情况下引用结果集。

答案 1 :(得分:2)

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

CREATE VIEW <viewname> AS <SELECT STATEMENT>

然后

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

答案 2 :(得分:2)

是。它们被称为观点。

您可以创建类似

的视图
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

答案 3 :(得分:1)

  

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 ...

视图也可以,但是另一个要跟踪的数据库对象,如果使用物化视图,则需要担心刷新快照表等。我的建议是尽可能使用WITH以及大量注释。

编辑:如果你发现自己一遍又一遍地问同样的问题,那么视图(或视图)会更合适。但否则,请在查询中保留逻辑。