SQL 服务器自加入虚拟 table
SQL Server self join for virtual table
我可以自己加入 "virtual" table(一些 table 联合的结果)吗?
SELECT
[VIRTUAL_TABLE].[Name] AS [name],
[VIRTUAL_TABLE].[ID] AS [id]
FROM (
SELECT
...
FROM [...]
UNION
SELECT
...
FROM [...]
) AS [VIRTUAL_TABLE]
-- INNER JOIN [VIRTUAL_TABLE] ON ... ???
我正在使用 SQL 服务器。
谢谢!
是的,您可以使用常见的 table 表达式 (CTE):
with virtualTable as(
SELECT
...
FROM [...]
UNION
SELECT
...
FROM [...]
)
select vt1.field,
vt2.field
from virtualTable vt1 join virtualTable vt2 on vt1.someField = vt2.otherField
如果您想经典地编写它,则必须复制您的 TSQL 代码。但是,您可以为此使用 CTE。
也许该代码可以解决您的问题:
SELECT VIRTUAL_TABLE_1.*
FROM (SELECT 'James' NAME, '12' ID) AS VIRTUAL_TABLE_1,
(SELECT 'James' NAME, '12' ID) AS VIRTUAL_TABLE_2
WHERE VIRTUAL_TABLE_1.ID = VIRTUAL_TABLE_2.ID
我可以自己加入 "virtual" table(一些 table 联合的结果)吗?
SELECT
[VIRTUAL_TABLE].[Name] AS [name],
[VIRTUAL_TABLE].[ID] AS [id]
FROM (
SELECT
...
FROM [...]
UNION
SELECT
...
FROM [...]
) AS [VIRTUAL_TABLE]
-- INNER JOIN [VIRTUAL_TABLE] ON ... ???
我正在使用 SQL 服务器。
谢谢!
是的,您可以使用常见的 table 表达式 (CTE):
with virtualTable as(
SELECT
...
FROM [...]
UNION
SELECT
...
FROM [...]
)
select vt1.field,
vt2.field
from virtualTable vt1 join virtualTable vt2 on vt1.someField = vt2.otherField
如果您想经典地编写它,则必须复制您的 TSQL 代码。但是,您可以为此使用 CTE。
也许该代码可以解决您的问题:
SELECT VIRTUAL_TABLE_1.*
FROM (SELECT 'James' NAME, '12' ID) AS VIRTUAL_TABLE_1,
(SELECT 'James' NAME, '12' ID) AS VIRTUAL_TABLE_2
WHERE VIRTUAL_TABLE_1.ID = VIRTUAL_TABLE_2.ID