具有前1条记录的复杂SQL Join on子查询

克里斯

我正在尝试编写一个如下所示的查询。

select t1.t1c1, t1.t1c2, t2.t2c3, t2.t2c4
from table1 t1 
left outer join (select top 1 t2c1, t2c2, t2c3, t2c4 from table2 
                 where t2c5 in (select t3c1 from table3 t3
                                where **t3c2 = t1.t1c2 and t3c3 = t1.t1c3**) t2
           on t1.t1c1 = t2.t2c1 and t1.t1c2 = t2.t2c2

SQL Server不允许的是上面突出显示的文本-即在table3子查询中引用table1的列。有没有办法做到这一点?我知道这可能不是最佳方法,还有其他方法可以实现吗?

戈登·利诺夫

你似乎确实想要outer apply我认为它看起来像这样:

select t1.t1c1, t1.t1c2, t2.t2c3, t2.t2c4
from table1 t1 outer apply
     (select top 1 t2c1, t2c2, t2c3, t2c4
      from table2 
      where t2c5 in (select t3c1
                     from table3 t3
                     where t3c2 = t1.t1c2 and t3c3 = t1.t1c3
                    ) and
            t1.t1c1 = t2.t2c1 and t1.t1c2 = t2.t2c2
     ) t2;

APPLY与之相关的子查询非常相似,除了它位于FROM子句中并且可以返回多列和多行。

注意:使用ORDER BY时,您应该使用TOP

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL子查询或JOIN

来自分类Dev

SQL Join vs子查询

来自分类Dev

使用JOIN的SQL子查询

来自分类Dev

多个INNER JOIN子查询sql

来自分类Dev

SQL JOIN多个表和子查询

来自分类Dev

使用子查询访问SQL JOIN

来自分类Dev

子查询 SQL 中的 INNER JOIN

来自分类Dev

如何使用带有子查询的join优化查询?

来自分类Dev

具有自定义ON子句的MySQL JOIN子查询

来自分类Dev

MySQL子查询JOIN

来自分类Dev

Mysql JOIN子查询

来自分类Dev

带有Join的Oracle子查询-如何引用子查询列?

来自分类Dev

将LEFT JOIN子查询限制为1个结果

来自分类Dev

SQL JOIN:帮助使用基于联接的子查询

来自分类Dev

如何在SQL中使用JOIN编写子查询

来自分类Dev

SQL多个JOIN或子查询,但避免使用笛卡尔积

来自分类Dev

子查询和JOIN在COUNT上应用MAX SQL Oracle

来自分类Dev

使用SQL子查询或JOIN子句进行选择

来自分类Dev

带有子查询的Oracle JOIN-无效的表名

来自分类Dev

带有子查询语法的LEFT OUTER JOIN

来自分类Dev

子查询还是INNER JOIN?

来自分类Dev

用join重写子查询

来自分类Dev

使用子查询加速JOIN

来自分类Dev

优化Join、Sum、子查询

来自分类Dev

复杂查询3个表,其中2个INNER JOIN,1个子查询,2个By By在Laravel中

来自分类Dev

SQL Server:JOIN子查询(从历史记录中选择数据)

来自分类Dev

MySQL GROUP_CONCAT在子查询中具有SUM()和多个JOIN

来自分类Dev

这个MySQL查询有什么问题,该查询具有一个带有JOIN的子查询,该查询应该链接3个表中的数据?

来自分类Dev

使用ON或JOIN的SQL查询