2011-11-30 2 views
3

나는 다음과 같은 테이블이 있습니다SQL 요청 - 여러 값

userid title   content 
1   gender  male 
1   location  NY  
2   gender  female 
2   location  SF 
3   gender  female 
3   location  NY 

내가 성 = "남성"과 위치 = "NY"

내가 시도하는 경우를 만 사용자 ID를 검색하기 위해 노력하고있어 :

select userid 
from table 
where content="male" 
    AND location="NY"; 

null을 반환합니다. 어떻게 할 수 있습니까?

+0

표 : 이것은 테이블 구조에 나쁜 생각입니다. 가능하다면 다시 건축하는 것이 좋습니다. – JohnFx

+0

나는 알고있다. 그러나 그것은 약간의 시간 전에이 방법으로 디자인되었다. – user7330

+0

나는 레거시 코드에 얽매이지 않는 것이 어떤 것인지 알고 있습니다. –

답변

1
SELECT t.userId 
FROM yourTable AS t 
INNER JOIN yourTable AS t2 ON t.userId = t2.userId 
    AND t.title = 'gender' 
    AND t.content = 'male' 
    AND t2.title = 'location' 
    AND t2.content = 'NY' 

또한 데이터 정규화를 고려할 것입니다. 앞으로 이와 같은 쿼리를 훨씬 쉽게 (그리고 더 빨리) 만들 수 있습니다.

+0

35 초 만에 나를 때려. 일어날 때가 싫어. 이 소프트볼 질문에 더 빨리 입력하는 법을 배워야합니다. +1 – JohnFx

+0

@JohnFx 나는 그것이 어떻게되는지 명확히 알고있다, 나는 많은 질문에 오늘 밤 너무 느렸다. –

+0

굉장! 고마워. – user7330