派生表的内连接
Posted
技术标签:
【中文标题】派生表的内连接【英文标题】:Inner Joins with Derived Tables 【发布时间】:2014-12-28 05:00:27 【问题描述】:我对连接派生表的基本语法有疑问。
这是使用的基本语法吗:
select *
from table1 a
inner join (select * from table2) as T1
on 1.ID = T1.ID
这行得通吗?
【问题讨论】:
***.com/questions/26559392/… 我问的是加入派生表。在我之前的问题中,我没有询问派生表。 把1.id改成a.id试试看。 【参考方案1】:如果您尝试使用使用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
【讨论】:
【参考方案2】:在您发布的查询中将on 1.ID = T1.ID
更改为on a.ID = T1.ID
,它应该可以正常工作,但您为什么还需要它?你可以直接加入table1
,不需要像内联/派生表这样的
select *
from table1 a
inner join
table2 T1
on a.ID = T1.ID
【讨论】:
好的,谢谢拉胡尔。你和贝丝都给出了很好的答案。我会将她的答案标记为答案,但这只是因为她先发帖。但是非常感谢你的帮助。我很感激!【参考方案3】:您是在询问加入两个子查询吗? 试试:
select * from
(select * from table1) t1 inner join
(select * from table2) t2 on
t1.id = t2.id
【讨论】:
那么,如果我将派生表放在 JOIN 子句中(就像您在上面所做的那样),我可以将它加入到查询中的其他表中吗?以上是关于派生表的内连接的主要内容,如果未能解决你的问题,请参考以下文章