【问题标题】: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

这行得通吗?

【问题讨论】:

标签: sql inner-join derived-table


【解决方案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 子句中(就像您在上面所做的那样),我可以将它加入到查询中的其他表中吗?
    猜你喜欢
    • 2016-09-18
    • 1970-01-01
    • 2023-03-05
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 2011-10-30
    • 2015-07-28
    相关资源
    最近更新 更多