2010-12-16 3 views
2

생성, 작동하지MySQL의 서브 쿼리는이 쿼리가 작동하지 않는 오류 코드 1064

SELECT * FROM Catalogue WHERE Catalogue.ID IN (
    SELECT ID_catalogue FROM Categories WHERE Categories.Product_type='xxx' 
) 

오류 코드 : 당신은 근처 SQL 구문에 오류가 '카테고리 ID_catalogue을 선택 1064 Categories.Product_type = 'xxx') ' 줄 2

좋아요, 아주 오래된 MySQL 버전을 사용하고 있기 때문입니다.

내가 얻을 시도하고

SELECT * FROM Catalogue WHERE Product_type='xxx' OR Catalogue.ID IN (
    SELECT ID_catalogue FROM Categories WHERE Categories.Product_type='xxx' 
) 

는 대한 동등한 있나요입니까?

의견을 보내 주셔서 감사합니다.

+1

어떤 mysql 버전을 사용합니까? 4.0 버전을 가지고있는 것 같습니다 : -S – zerkms

+4

실행중인 MySQL 버전은 무엇입니까? 2003 년 4.1에서 부질의 지원이 추가되었습니다. –

답변

4

이 쿼리를 빨리 수행하십시오.

+1

알 겠어. 고맙습니다! 3.23 버전 : S – Aximili

+0

버전 3.23에 해당하는 쿼리가 있습니까? – Aximili

+2

@aximili : 최신 3.23 릴리스는 2003 년 9 월 11 일이었습니다. 업데이트 할 것을 강력히 권합니다. -S – zerkms

3

귀하의 질의에 아무런 문제가 없습니다. 문제가 될 가능성이있는 것은 MySQL 버전입니다. 서브 쿼리는 사용자가 테이블 Catalogue에 대한 테이블 Categories 및 인덱스 Product_type에 대한 종합 지수 ID_catalogue + Product_type을 추가해야합니다 4.1

 SELECT c.*, 
      g.ID_catalogue 
     FROM Catalogue c 
    LEFT JOIN Categories g ON g.ID_catalogue = c.ID 
         AND g.Product_type='xxx' 
    HAVING ID_catalogue IS NOT NULL 
     OR Product_type = 'xxx' 

에 추가 된 이후 다음은 이유는, - 당신은 MySQL 버전 < = 4.0을 사용하는 경우

+0

이미 주석에서 다루고 있습니다. zerkms의 평판을 훔치지 마십시오. –

+2

@ 단 Zerkms가 대답에 넣어야합니다. 다른 응답도 참조하십시오. 도둑질을 한 사람도 그 사람을 부르짖어야합니다. 다른 의견을 통해 배울 때 잘못된 점이 있다는 것을 알지 못했지만 용기를 가지고 답을 옳고 그른 것으로 만들었습니다. – johnny

+0

@ johnny : 나는 추측하고 싶지 않다. 나는 그것이 정답이라고 확신 할 때에 만 대답하고있다. 이 특별한 경우에는'select' 부질 직전에 어떤 종류의 타입되지 않은 문자가 될 수도 있습니다. – zerkms

관련 문제