SQL查询,当只有一个符合条件时,将检索多个记录

时间:2016-02-09 19:19:06

标签: sql

我有一个包含每个帐户多个记录的表,每个记录都有一个带有余额的单位#。如果其中一个单位的余额为负值,我想选择该帐户,并返回该帐户的所有记录,包括带负面单位的记录。例如:Acct#1234有两个记录(每个记录具有不同的单位#和余额)。一个单位的负余额和一个正余额。我想检索一个单位为负数的任何帐户的单位记录。  我该如何做到这一点?

4 个答案:

答案 0 :(得分:0)

尝试这种方式:

Select * 
  from yourAccountTable a
 where EXISTS (select 1 
                 from yourAccountTable b
                where a.accID = b.accId
                  and b.unitBalance < 0 )

子句exists所做的是以布尔方式验证如果给定的注册表(a.accID = b.accId)遵循某种条件,它基本上是一个JOIN操作,根据您的情况返回行,如果余额是负面的。

答案 1 :(得分:0)

我不知道您的表格结构可以为您提供更准确的查询,但您可以使用简单的WHERE EXISTS执行此操作:

Select  *
From    YourTable   A
Where Exists
(
    Select  *
    From    YourTable   B
    Where   A.AccountNo = B.AccountNo
    And     B.Balance < 0
)

这将带回AccountNo有任何负值余额记录的记录。

答案 2 :(得分:0)

一个简单的IN将在标准SQL中执行;

SELECT * FROM myTable 
WHERE account_id IN (
    SELECT account_id FROM myTable WHERE balance < 0
)

答案 3 :(得分:-1)

不知道你到目前为止所尝试的内容以及你所指的数据库系统:这是一个帮助。 使用限制Accts的条件执行子查询,然后将其提供给父查询以检索所有相关记录。

刚看到你提到过SQL Server 2008.我喜欢EXIST子句的答案,但有时候一个简单的子查询IN子句会给你更多选择:

    Select * 
    from yourAccountTable a
    where a.Acct IN (select distinct a.Acct 
             from yourAccountTable b
             where b.unitBalance < 0)