SQL: 子集数据: select id when time_id for id satisfy a condition from another column

SQL: subset data: select id when time_id for id satisfy a condition from another column

我在 SQL 中有一个数据 (dt) 如下所示:

 ID     time_id  act  rd
 11        1      1    1
 11        2      4    1
 11        3      7    0
 12        1      8    1
 12        2      2    0
 12        3      4    1
 12        4      3    1
 12        5      4    1
 13        1      4    1
 13        2      1    0
 15        1      3    1
 16        1      8    0
 16        2      8    0
 16        3      8    0
 16        4      8    0
 16        5      8    0

并且我想获取此数据的子集,以便仅保留具有 time_id == 5 的 id(及其相应的 time_id、act、rd)。所需的输出如下

 ID     time_id  act  rd     
 12        1      8    1
 12        2      2    0
 12        3      4    1
 12        4      3    1
 12        5      4    1
 16        1      8    0
 16        2      8    0
 16        3      8    0
 16        4      8    0
 16        5      8    0

我知道我应该以某种方式使用 having 子句,但到目前为止还没有成功(returns 我的输出是空的)。以下是我的尝试:

SELECT * 来自 dt 按 ID 分组 有 min(time_id) == 5;

您可以使用 exists:

的相关子查询
select t.*
from t
where exists (select 1 from t t2 where t2.id = t.id and t2.time_id = 5);

这个查询:

select id from tablename where time_id = 5

returns 您希望在结果中出现的所有 id
与运算符一起使用 IN:

select *
from tablename
where id in (select id from tablename where time_id = 5)
WITH temp AS
(
SELECT id FROM tab WHERE time_id = 5
)
SELECT * FROM tab t join temp tp on(t.id=tp.id);

检查此查询

 select * from table t1 join (select distinct ID from table t where time_id = 5) t2 on  t1.id =t2.id;