我目前正在将MS访问查询转换为SQL查询,并注意到在访问查询中它似乎正在将另一个查询加入到其他表中。所以我环顾四周,看起来这个查询几乎使查询看起来更干净,而不需要在同一个脚本中有各种子查询
像
这样的东西 FROM [query name] INNER JOIN [some other table]
SQL中有这样的东西吗?
答案 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以及大量注释。
编辑:如果你发现自己一遍又一遍地问同样的问题,那么视图(或视图)会更合适。但否则,请在查询中保留逻辑。