2014-04-03 2 views
0

ip_address에 대해 여러 레코드를 포함 할 수있는 테이블이 있습니다.행 값을 기반으로 기본 설정으로 행을 가져 오기위한 SQL 쿼리

10.10.10.1 john 
10.10.10.2 bob 
10.10.10.3 kristin 

SQLAlchemy의/SQLite는 경우 사용 : 그러나, 나는 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 ....에 대한 결과 집합을 반환 된 첫 번째 행을, 그렇지 않으면, ip_addresscanceled=0 경우 여러 레코드가 존재하는 행을 반환 싶어 그것은 어떤 관련성이 있습니다.

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

얼마나 멀리 받았습니까? 시작 쿼리를 시작하고 우리는 몇 가지 특정 문제를 지적 할 수 있습니다. – Adam

+0

SELECT b.id, a.ip_address, b.username, b.canceled FROM (mytable 주문에서 고유 번호 (ip_address) 선택 취소됨) a, mytable b WHERE b.ip_address = a.ip_address; 하지만 "ip_address"에 대한 여러 정의가 반환됩니다. – sadris

+0

_ 첫 번째 행의 취소 된 항목 = 1_ 측정 단위? 'id' 명령을 받습니까? –

답변

0

적절한 쿼리에 대한 여러 정의를 반환는 것으로 나타납니다

취소 가정하면

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

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 
+0

SQLite는 창 기능을 가지고 있지 않습니다. –

+0

oops, sql server.sorry에 htat를 썼습니다. 태그를 보지 못했습니다. –

관련 문제