派生表的内连接

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 子句中(就像您在上面所做的那样),我可以将它加入到查询中的其他表中吗?

以上是关于派生表的内连接的主要内容,如果未能解决你的问题,请参考以下文章

MySql表的内连和外连

mysql中3个表的内连接

MySQL 表的内连和外连

表的内连接外连接(左连接与右连接)

Mysql的内连接,外链接,交叉链接

sql server 2005 中的内连接和外连接 怎么理解?