当只有一条记录满足条件时将检索多条记录的SQL查询

当只有一条记录满足条件时将检索多条记录的SQL查询,sql,Sql,我有一个表,每个帐户有多个记录,每个记录有一个单位和一个余额。如果其中一个单位有负余额,我想选择该账户,并返回该账户的所有记录,包括带有负单位的记录。例如:账户1234有两个记录,每个记录有不同的单位和余额。一个单位的余额为负,一个单位的余额为正。我想检索任何一个单位为负数的账户的两个单位记录。 我怎样才能做到这一点呢?不知道您到目前为止尝试了什么,也不知道您指的是什么数据库系统:这里有一个帮助。 使用限制帐户的条件执行子查询,然后将其输入父查询以检索所有相关记录 刚才看到您提到SQL Serv

我有一个表,每个帐户有多个记录,每个记录有一个单位和一个余额。如果其中一个单位有负余额,我想选择该账户,并返回该账户的所有记录,包括带有负单位的记录。例如:账户1234有两个记录,每个记录有不同的单位和余额。一个单位的余额为负,一个单位的余额为正。我想检索任何一个单位为负数的账户的两个单位记录。
我怎样才能做到这一点呢?

不知道您到目前为止尝试了什么,也不知道您指的是什么数据库系统:这里有一个帮助。 使用限制帐户的条件执行子查询,然后将其输入父查询以检索所有相关记录

刚才看到您提到SQL Server 2008。我喜欢EXIST子句的答案,但有时一个简单的子查询IN子句会为您提供更多选项:

    Select * 
    from yourAccountTable a
    where a.Acct IN (select distinct a.Acct 
             from yourAccountTable b
             where b.unitBalance < 0)
试着这样做:

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

如果给定的注册表a.accID=b.accID遵循某个条件,则exists子句所做的是以布尔方式进行验证。如果余额为负,则基本上是一种基于条件返回行的联接操作。

我不知道您的表结构是否可以为您提供更准确的查询,但您可以通过一个简单的方法来实现这一点:

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

一个简单的IN将在标准SQL中执行此操作

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

什么数据库系统。汤姆说了些什么。2.你在用什么关系数据库管理系统?我是sql新手,到目前为止还没有什么。到目前为止,我只编写了简单的查询,因此我不知道嵌套查询或CTE是否可以工作,也不知道如何对其进行编码。使用Microsoft SQL Server 2008,您能提供表结构吗?哇,有很多提示!谢谢,我会尝试其中一些,然后让你知道。@Tina肯定会选择最适合你的答案。很抱歉延迟回复,她不在办公室。我能够使用Joachim的建议进行以下查询。非常感谢!
SELECT * FROM myTable 
WHERE account_id IN (
    SELECT account_id FROM myTable WHERE balance < 0
)