MSSQL 2012 - 在子查询中返回多个列

Posted

技术标签:

【中文标题】MSSQL 2012 - 在子查询中返回多个列【英文标题】:MSSQL 2012 - Returning multiple columns in a subquery 【发布时间】:2013-07-03 07:17:02 【问题描述】:

我想用子查询返回多个列。

E.G,

select a.name, a.age
       from table1 a, ( select b.race, b.weight from table2 b where dateDiff(dd, b.date1, b.date2 ) < 30 )
where a.age > 24

你们中的一些人说过“只需使用联接”- 我不希望子查询中的 dateDiff 影响父查询的结果。同样,我的真实查询比这个更复杂,但这应该足以解释我的问题。

【问题讨论】:

那么你为什么不使用连接来获得所需的结果呢? 使用联接而不是子查询 请提供有关您的子查询的更多详细信息,以便我们了解您为什么不使用 LEFT JOIN。在当前的例子中,Hip Hip Array 给出的答案是正确的。 @Treb 我刚刚更新了。希望这有助于解释。我不希望我的子查询中的 dateDiff 子句影响父结果。是否可以在左连接中做到这一点? 只需将 dateDiff() 条件放入LEFT JOIN 条件中即可。 【参考方案1】:

使用左连接来做到这一点,左连接将返回NULL值

SELECT a.name, b.score, ...
FROM (select id, name, ... from table1 where ???) a
LEFT JOIN (select id, score, ... from table2 where ???) b on (a.id = b.id)
WHERE clause

【讨论】:

我可能没有很好地解释我的问题 - 但在这种情况下我不能使用连接。因为我的子查询中有几个条件,我不想影响我的父结果。 @JasonWells - 您可能应该发布您的实际查询,而不是提出一个简单的查询并要求答案。 @JasonWells:你仍然可以加入 select 语句,检查我的编辑

以上是关于MSSQL 2012 - 在子查询中返回多个列的主要内容,如果未能解决你的问题,请参考以下文章

我可以在子查询中使用多个列吗?

为啥mssql的OPENQUERY取oracle某表时只返回了一行数据,而在pl/sql中可以查到表中有两行数据,求解答?

PHP MSSQL:查询返回无行时如何显示输出

在 postgres 选择中,将列子查询作为数组返回?

子查询(章节摘要)

在子查询中引用外部查询