【发布时间】:2011-12-08 14:36:03
【问题描述】:
我是 sql 的初学者,这个有点过头了,希望有人能指出我正确的方向..
我编写了一个查询,该查询正确地从右侧表中返回一行,但我需要在最后的 where 子句中添加另一个测试,以重新检查表并检查字段 contitems.tofollow 中的所有条目并查找大于与返回的原始 contracts.ContNo 行匹配的零..
SELECT Contracts.*, Contitems.*
FROM dbo.Contracts
INNER JOIN dbo.ContItems
ON dbo.ContItems.RECID =
(SELECT TOP(1) RECID
FROM dbo.ContItems
WHERE (ContItems.CONTNO = dbo.Contracts.CONTNO))
WHERE dbo.Contracts.SOURCE = 2
and (contracts.custom = 1 or contitems.tofollow > 0)
and contracts.status not in (4,9)
我需要用一个测试替换contitems.tofollow > 0,该测试重新检查每个ContNO 的整个contitems.tofollow 结果,但不知道如何实现它.. 谁能帮忙..?
【问题讨论】:
-
select top 1没有order by子句将检索SQL Server 当时最方便检索的行 - 结果可能在两次运行之间有所不同查询。 -
感谢 Ocaso..今天早上出去了,很抱歉回复晚了.. 它选择的前 1 个结果并不重要,只要它只是我需要的一行.. 但是我需要在最后的 where 子句中重新测试同一张表,但不确定如何处理它。 contitems.tofollow > 0 语句只是测试返回的单行。我需要测试 contitems 表中与原始 ContItems.CONTNO 匹配的所有条目= dbo.Contracts.CONTNO
标签: sql sql-server sql-server-2005