我有一个SQL查询返回基于where子句的结果。SQL Server:嵌套选择查询
我想包括一些更多的结果,从同一张表,取决于在第一次选择中找到什么。
我的选择返回ID符合where条件的行。它确实发生这个表有更多的行与这个ID,但不符合最初的标准。我不想用一个单独的调用重新查询数据库,我想使用一个select语句来获取具有相同ID的这些额外的行。 ID不是索引/ ID。它是我在这里使用的命名约定。
伪:(两步)
1: select * from table where condition=xxx
2: for each row returned, (select * from table where id=row.id)
我想做的事:
select
id as thisID, field1, field2,
(select id, field1, field2 from table where id = thisID)
from
table
where
condition=xxx
我在我的实际查询多个连接,只是不能得到上述工作。我遗憾地无法提供真正的查询,但是我得到以下错误:
当子查询未与EXISTS一起引入时,只能在选择列表中指定一个表达式。无效的列名'thisID'
我的查询可以很好地处理多个连接,没有上述问题。我试图检索这些额外的记录作为当前工作查询的一部分。
实施例:
表
select * from table where col3 = 'green'
id, col1, col2, col3
123 | blue | red | green
-------------------------
567 | blue | red | green
-------------------------
123 | blue | red | blue
-------------------------
890 | blue | red | green
-------------------------
欲返回所有4行,因为虽然row 3
失败where条件,它具有相同的col1
值row 1
(123),并且我需要包含它,因为它是我需要定位/导入的“集合”的一部分,由id=123
调用/引用。
我现在正在做的是获取第一行,然后运行另一个基于第一行ID的查询来获得第三行。
...好吧,你能给我们提供样本数据布局吗?你是否有每行唯一的id(ids不必是唯一的?是否匹配的行也出现在子查询中?如果多行具有相同的键 - 它们应由子查询报告,但列出用不同的行(不同的唯一ID)?为获得最佳结果,请尽可能完整地查询查询(如果需要,请匿名) –
Hi @ Clockwork-Muse,查询有5个连接,许多领域...我正在将一个旧系统的数据“导入”到我们正在开发的一个新系统中,我将添加更多的细节。目前,我已经提前完成并重新查询了每一个最初的行,因为我需要取得一些进展,但我希望能得到以上工作以供将来参考 –
这很好,但除非您告诉我们您期望数据看起来像什么时候完成(关于复制的一般值),我们可以不明智地帮助你。哎呀,_你可能会对结果感到惊讶... –