2011-08-19 6 views
0

그래서 두 개의 별도 테이블이 있습니다. 첫 번째 표에는 ID가있는 여러 광고 그룹이 있습니다. 두 번째 테이블에는 각 광고에 대한 ad_group ID가 포함 된 열이있는 광고 모음이 있습니다. ad_group_id는 광고 그룹 표의 광고 그룹 ID입니다. 따라서 ad_group_id가 103, 104,105,107,117117 및 120 인 광고를 모두 선택하려고합니다.다른 테이블에서 값 선택

그래서 다음 쿼리를 시도했습니다.

SELECT * FROM ads WHERE ad_group_id LIKE '%103%' OR ad_group_id LIKE '%104%' 
OR ad_group_id LIKE '%105%' OR ad_group_id LIKE '%107%' OR ad_group_id LIKE '%117%' OR ad_group_id LIKE '%118%' OR ad_group_id LIKE '%120%'; 

이전 쿼리가 작동 했습니까? 예

내 쿼리가 효율적 이었습니까? 아니!

보다 효율적인 방법으로 이전 MySQL 쿼리를 어떻게 실행할 수 있는지 궁금합니다.

편집 :

AD GROUP - table 1 
id name 
100 Tony 
100 David 
103 James 
104 Ann 
105 Jon 
150 Sara 

AD - table 2 
keyword ad_group_id 
that  103 
one   100 
is   105 
special  104 
no   100 
please  103 

그래서 내가와 끝까지해야 의미가 있습니다

that  103 
is   105 
special  104 
please  103 

희망.

편집 2 :

다음 코드는 같은 결과를 제공하고 짧은,하지만 난 선택해야 더 많은 값이있을 때 나는이 일을 상상할 수 없다.

SELECT * FROM ads WHERE ad_group_id IN (103,104,105,107,117,118,120); 
+0

귀하의 질문에 완전히 명확하지 않습니다. 이 테이블에있는 데이터의 예와 찾고있는 결과를 추가 할 수 있습니까? – Oded

+0

왜 '좋아'할까요? 왜 '='가 아닌가? –

+0

필자는 SQL을 처음 접했고 어떤 이유로 든 필요한 특정 값을 가지고 있지 않으면 항상 필자는 항상 사용합니다. – ATMathew

답변

1

id1, id2, id3 등과 같이 ad_group_id를 저장하는 것으로 알고 있습니다. 그렇다면이 관계는 many-to-many이고 더 효과적으로 2 개의 열 ad_id, ad_group_id가있는 추가 테이블을 생성합니다. 그러나 그것은 귀하의 데이터의 양에 달려 있습니다.

관련 문제