我有一个表可以有ip_address
的多个记录。但是,我想返回canceled=0
的行,如果存在ip_address
的多个记录,否则请获取canceled=1
id ip_address username canceled
0 10.10.10.1 john 0
1 10.10.10.1 johnny 1
2 10.10.10.1 quincy 1
3 10.10.10.2 bob 1
4 10.10.10.3 kristin 0
示例返回SELECT ip_address,username ....
的结果集:
10.10.10.1 john
10.10.10.2 bob
10.10.10.3 kristin
如果有任何相关性,请使用SQLAlchemy / Sqlite。
SELECT
b.id,
a.ip_address,
b.username,
b.canceled
FROM (
select distinct(ip_address) from mytable order by canceled) a,
mytable b
WHERE
b.ip_address=a.ip_address;
但是这会为" ip_address"
返回多个定义答案 0 :(得分:1)
正确的查询似乎是:
SELECT b.id,a.ip_address,b.username,b.canceled FROM (select distinct(ip_address) from mytable order by canceled) a, mytable b WHERE b.ip_address=a.ip_address GROUP BY b.ip_address
答案 1 :(得分:0)
假设取消是一个int,这应该可行。
select *from #temp order by canceled
with cte as
(
select ip_address,username,canceled,ROW_NUMBER() over(partition by ip_address order by canceled) as rn from #temp
)
select *from cte where rn=1