2

这是一个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

我首先尝试查找帐户列为“7001”的所有值以找到正确的 ID。之后,我只需要拉出带有这些 ID 的行,这样我就可以看到这些特定 ID 的所有帐户。

我正在使用的示例代码

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

from 
students s

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

我可以通过 2 个查询来执行此操作,一个以查找具有“7001”帐户值的 id,然后仅针对 id 运行另一个查询,但想知道是否有一种方法可以编写以便一次性计算所有内容。

提前致谢!

4

3 回答 3

0
SELECT  *
FROM    tableName
WHERE   ID IN 
        (
            SELECT ID 
            FROM   tableName
            WHERE  accounts = 7001
        )

The JOIN version (recommended)

SELECT  a.*
FROM    students a
        INNER JOIN students b
          ON a.ID = b.ID
WHERE   b.accounts = 7001
于 2013-02-28T16:34:58.140 回答
0
select t2.*
from tbl t1, tbl t2
where t1.accounts = '7001'
and t1.id = t2.id
于 2013-02-28T16:36:41.687 回答
0

此解决方案已优化:

SELECT  a.*
FROM    tableName as a
INNER JOIN tableName as b
    ON a.id = b.id
    AND b.accounts = 7001
于 2013-02-28T16:41:29.087 回答