内联接派生表

时间:2014-10-31 19:26:22

标签: sql inner-join derived-table

我对加入派生表的基本语法有疑问。

这是使用的基本语法:

select *
from table1 a

inner join (select * from table2) as T1

on 1.ID = T1.ID

这会起作用吗?

3 个答案:

答案 0 :(得分:7)

你问的是加入两个子查询? 尝试:

select * from
(select * from table1) t1 inner join
(select * from table2) t2 on
t1.id = t2.id

答案 1 :(得分:0)

在您发布的查询中,将on 1.ID = T1.ID更改为on a.ID = T1.ID,它应该可以正常运行,但为什么还需要呢?您可以直接加入table1,不需要内联/派生表,如

select *
from table1 a
inner join 
table2 T1
on a.ID = T1.ID

答案 2 :(得分:0)

如果您尝试使用使用 VALUES 定义的派生表,即绕过临时表 (multiple row insert) 插入的 1000 行限制,也很有用。确保在 VALUES 语句中指定变量/列的名称,即 (ids),在别名之后,即 v

示例:

SELECT *
FROM (VALUES (1,'c1'),(2,'c2'),(3,'c3')) v (ids, textcol)
JOIN TABLE1 t1 on t1.ids = v.ids