Sql 如果在另一列上聚合,则匹配具有特定计数的行
我有一个包含以下字段的表:Sql 如果在另一列上聚合,则匹配具有特定计数的行,sql,join,count,Sql,Join,Count,我有一个包含以下字段的表:Url、IP、input 我想检索具有不同输入的不同IP的所有URL(以及相应的IP) 例如: Url1, IP1, input1 Url2, IP2, input1 Url3, IP3, input1 Url1, IP4, input2 Url2, IP5, input2 Url3, IP3, input2 Url4, IP3, input2 我试图得到这样的结果: Url1, IP1, input1 Url1, IP4, input2 Url2, IP2, inp
Url、IP、input
我想检索具有不同输入的不同IP的所有URL(以及相应的IP)
例如:
Url1, IP1, input1
Url2, IP2, input1
Url3, IP3, input1
Url1, IP4, input2
Url2, IP5, input2
Url3, IP3, input2
Url4, IP3, input2
我试图得到这样的结果:
Url1, IP1, input1
Url1, IP4, input2
Url2, IP2, input1
Url2, IP5, input2
因为Url3在不同的输入上获得相同的IP3,所以我不希望结果中包含它
另外,我不想要Url4,因为它只在input2中
我搜索过子查询和联接(在同一个表上),但最终在一个外部脚本中完成了:有没有一种方法可以直接在SQL中执行它
create table your_table
(Url varchar(50),IP varchar(50), input varchar(50));
insert into your_table (Url, IP, input) values ('Url1', 'IP1', 'input1');
insert into your_table (Url, IP, input) values ('Url2', 'IP2', 'input1');
insert into your_table (Url, IP, input) values ('Url3', 'IP3', 'input1');
insert into your_table (Url, IP, input) values ('Url1', 'IP4', 'input2');
insert into your_table (Url, IP, input) values ('Url2', 'IP5', 'input2');
insert into your_table (Url, IP, input) values ('Url3', 'IP3', 'input2');
select *
from your_table
where (Url,IP) in
(
select Url, IP
from
(
select Url, IP, count(*)
from your_table
group by Url, IP
having count(*) = 1
) a
);
A可以
这很好,但是如果只有一个Url,我不希望它出现在结果中,因为我使用sqlite,我需要做一个连接,而不是
where(Url,IP)
,但这是次要的
SELECT MIN(Url), IP, input
FROM YourTable
GROUP BY
IP, input