【问题标题】:MSSQL 2012 - Returning multiple columns in a subqueryMSSQL 2012 - 在子查询中返回多个列
【发布时间】: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 条件中即可。

标签: sql sql-server subquery


【解决方案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 语句,检查我的编辑
猜你喜欢
  • 2016-04-10
  • 1970-01-01
  • 2018-09-21
  • 1970-01-01
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多