SQLite:使用SELECT而不是TEMP TABLE

时间:2018-07-05 23:58:12

标签: sqlite

我有一个SQLite查询,该查询创建一个临时表,后跟一个SELECT语句。我想弄清楚如何在不使用临时表的情况下编写查询,以便可以将其用作视图。有人可以指出一些这样做的例子吗?

1 个答案:

答案 0 :(得分:0)

如果您不必在temptable中使用view,则可以使用以下语句从select创建视图:

    CREATE VIEW v_tracks 
    AS 
    SELECT
    trackid,
    tracks.name,
    albums.Title AS album,
    media_types.Name AS media,
    genres.Name AS genres
    FROM
    tracks

从现在开始,您只需使用以下简单查询:

    SELECT
    *
    FROM
    v_tracks;

Try it Here

如果必须在视图中使用临时表,则可以使用CTEs,CTE是在单个语句的执行范围内定义的临时结果集,可以在视图中使用。 >

here中的示例:

    CREATE VIEW vSalesStaffQuickStats
    AS
    WITH SalesBySalesPerson (SalesPersonID, NumberOfOrders, MostRecentOrderDate)
    AS
    (
          SELECT SalesPersonID, COUNT(*), MAX(OrderDate)
          FROM Sales.SalesOrderHeader
          GROUP BY SalesPersonID
    )
    SELECT E.EmployeeID,
    EmployeeOrders = OS.NumberOfOrders,
    EmployeeLastOrderDate = OS.MostRecentOrderDate,
    E.ManagerID,
    ManagerOrders = OM.NumberOfOrders,
    ManagerLastOrderDate = OM.MostRecentOrderDate
    FROM   HumanResources.Employee AS E
           INNER JOIN SalesBySalesPerson AS OS
               ON E.EmployeeID = OS.SalesPersonID
           LEFT OUTER JOIN SalesBySalesPerson AS OM
               ON E.ManagerID = OM.SalesPersonID 

我希望能帮上忙。