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;
我在 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;