2014-02-22 3 views
1

이것은 postgresql 용으로 작성한 코드의 특정 질문이며 프로젝트 요구 사항에 맞게 mysql으로 마이그레이션 중입니다.MySQL 오류 코드 1064 구문 오류

다음과 같이 MySQL은 지금까지 기록 된 코드는 다음과 같습니다 오류는 "A1"과 "A2"로 선택한 두 테이블의 이름 근처에 진열되어

(select substring(dt,1,9) as dt,concat(vish,visl,visn) as vis,ip 
    from assignment_walmart.b 
    where service='ss' and ua not like '%ktxn%' 
     and ua not like '%khte%' 
     and ua not like '%keynote%' 
     group by 1,2,3 
    ) as A1 

    left join // This is where it shows the error. 

    (select ip,flag from 
    assignment_walmart.b1 
    group by 1,2  
    ) as A2 

    on A1.ip=A2.ip 
    where A2.flag is NULL 
    group by 1,2; 

을, 그래서 나는 그것의 있으리라 믿고있어 mysql에서 허용되지 않습니다.

이 방법으로 두 테이블을 사용해야 만 필요한 결과를 얻을 수 있기 때문에 위의 코드에 대한 대체 구문을 사용하십시오.

정확하게 별칭을 사용하거나 postgresql에서 명확하게 작동하는 방식으로 2 개의 테이블을 조인하려면 어떻게해야합니까?

도움을 주시면 감사하겠습니다.

+0

그 모든 코드의 경우, A1' 정확히하지 '것을 ... 그것은 A1은 a2' 가입 왼쪽'기본적으로의 고려 합법적 인 SQL. 'select *를 사용해보십시오. 왼쪽 join ... ' –

답변

3

다른 쿼리에 하위 쿼리가 조인되었습니다. 어느 데이터베이스에서나 작동하지 않아야합니다. 당신은 그런 select 또는 무언가에이 포장해야 당신이 외부 쿼리 무엇 집계 필드는 원하는 것에 추측을하고

select A2.dt, A2.vis, count(*) 
from (select substring(dt,1,9) as dt, concat(vish,visl,visn) as vis,ip 
     from assignment_walmart.b 
     where service='ss' and ua not like '%ktxn%' 
      and ua not like '%khte%' 
      and ua not like '%keynote%' 
     group by substring(dt,1,9), concat(vish,visl,visn), ip 
    ) as A1 left join // This is where it shows the error. 
    (select ip,flag from 
     assignment_walmart.b1 
     group by ip, flag 
    ) as A2 
    on A1.ip=A2.ip 
where A2.flag is NULL 
group by A2.dt, A2.vis; 

. 어떤 필드가 집계되는지 명시하는 것이 좋습니다.

+0

고마워요, 제 실수를 이해했습니다. –

0

바깥 쪽 쿼리에서 SELECT ... FROM이 누락 된 것 같습니다. 그것은 당신의 쿼리의 형식이 될 수 있도록 뜻 보이는

:

SELECT ... 
    FROM (inline view query) A1 
    LEFT 
    JOIN (inline view query) A2 
    ON A1.col = A2.col ... 
WHERE ... 
GROUP BY ... 
+1

스펜서 감사합니다, 내 실수를 이해했습니다. 제대로 결합 되었는가를 확인하기 위해 코드 스 니펫 (snippet)을 시도하고 있었지만 이제는 코드를 선택하지 않고 코드가 불완전합니다. –