我有一个简单的设计
id | grpid | main
-----------------
1 | 1 | 1
2 | 1 | 0
3 | 1 | 0
4 | 2 | 0
5 | 2 | 1
6 | 2 | 0
要回答的问题是
What is the "id" of the main in each group?
结果应为
id
---
1
5
此刻,说实话,我自己无法回答。请帮助我。
答案 0 :(得分:2)
也许我在这里过分简化,但你不能这样做:
select id,
grpid
from table
where main = 1;
答案 1 :(得分:0)
最简单的方法是:
select id from <table_name> where main=1
但正如您所提到的,您想要id
以下grpid
分组,查询将有效。
select id from <table_name> group by grpid, main having main = 1
您必须对您的群组ID应用group by
,并根据该检查将main的值设为1.您将获得所需的结果。
答案 2 :(得分:0)
如果你想为其相应的“MainId”添加一列,你可以这样做吗?
SELECT f.id, f.grpid, f.main, t.MainId
FROM foo f
CROSS APPLY (
SELECT grpid, id AS MainId
FROM foo f1
WHERE main = 1
AND f.grpid = f1.grpid) t