sql-从一列中查找值以从另一列中查找所有其他值

sql-从一列中查找值以从另一列中查找所有其他值,sql,if-statement,case,Sql,If Statement,Case,这是一个SQL问题,我会尽力解释 我有一张如下表 id name accounts 1 Jim 7001 1 Jim 7002 1 Jim 7003 2 Ryan 7001 3 Todd 7001 3 Todd 7003 2 Ryan 7002 4 Cam 7001 5 Fran 7001 2 Ryan 7003 1 Jim 7004 我首先尝试查找accounts列为“7001”的所有值,以查找正确的id

这是一个SQL问题,我会尽力解释

我有一张如下表

id  name    accounts
1   Jim 7001
1   Jim 7002
1   Jim 7003
2   Ryan    7001
3   Todd    7001
3   Todd    7003
2   Ryan    7002
4   Cam 7001
5   Fran    7001
2   Ryan    7003
1   Jim 7004
我首先尝试查找accounts列为“7001”的所有值,以查找正确的id。之后,我只需要拉线与这些id的,所以我可以看到这些特定的id的所有帐户

我正在使用的示例代码

select 
s.id,
s.name,
s.account

from 
students s

where
s.account in ('7001','7002','7003','7004')

我可以通过两个查询来实现这一点,一个是查找帐户值为“7001”的id,然后仅针对id运行另一个查询,但我想知道是否有一种写入方法,以便一次计算所有id

提前谢谢

SELECT  *
FROM    tableName
WHERE   ID IN 
        (
            SELECT ID 
            FROM   tableName
            WHERE  accounts = 7001
        )
JOIN
版本(推荐)


此解决方案经过优化:

SELECT  a.*
FROM    tableName as a
INNER JOIN tableName as b
    ON a.id = b.id
    AND b.accounts = 7001

如果
accounts
是一个整数,我们可以在这里使用group by吗?@AshReva你想聚合一些字段吗?@AshReva请澄清你到底需要什么不,我只是想如果我们也可以使用group by。那很好。对不起bothering@AshReva询问
:D
没有问题<当您想使用聚合函数(如
SUM()、MAX()、MIN()等)聚合某些文件时,可以使用code>groupby
子句。
select t2.*
from tbl t1, tbl t2
where t1.accounts = '7001'
and t1.id = t2.id
SELECT  a.*
FROM    tableName as a
INNER JOIN tableName as b
    ON a.id = b.id
    AND b.accounts = 7001