2012-09-06 2 views
0

다음 쿼리는 SQL Server Managemengt Studio에서 작동하지만 phpmyadmin에서 작동하지 않는 것으로 보입니다. 잘못된 것이 무엇인지 알아낼 수 있습니까? "# 1064 - SQL 구문에 오류가 있습니다. 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. 7 행의 'google_rank FROM eig_ranking mi WHERE mi.project_id = m.project_'근처에서 사용하십시오. "phpMyadmin에서 Microsoft 서버 2008 SQL 쿼리 작동

MySQL 버전을 사용하고 있습니다 : 5.5.20 및 PHP 버전 5.3.13 및 Microsoft 서버 2008

SELECT project_id, 

    google_rank, 

     COALESCE(
     (
     SELECT TOP 1 google_rank 
     FROM eig_ranking mi 
     WHERE mi.project_id = m.project_id 
     ORDER BY 
      project_id 
     ), 0 - google_rank AS movement 

     ,keyword 
     ,domain 

FROM eig_ranking m where DATEDIFF(WEEK,rank_date, GETDATE())= 1 and google_rank!=0 

order by movement desc 
+1

여기에'DATEDIFF'이란 무엇입니까? 그것도 MySQL에서 지원되지 않습니다! – Vishal

답변

3

데이터베이스가 MySQL 인 경우 에드는 MySQL의 구문을 작성하지 마이크로 소프트 SQL 서버 구문 - LIMITTOP 교체 등

+0

이전에 이것을 시도했지만, 이제는 MySQL() 함수에 대해 알고 있습니다. 나는 한도로 top을 대체했지만 'LIMIT 1 google_rank FRIG eig_ranking mi WHERE mi.project_id = m.pr 7'줄 근처에 있습니다. – petergt

+0

LIMIT은 MySQL의 끝에 있습니다. 즉 :'ORDER BY project_id LIMIT 1' – podiluska

+0

감사합니다. 나는 또한 0 뒤에 닫는 괄호를 추가하는 것을 잊어 버렸습니다. – petergt

1

MySQL을 더 SELECT TOP n 표현이 없습니다 MySQL의 형식 DATEDIFF 인수, NOW()GETDATE().

일반적으로 SQL Server 구문은 MySQL과 약간 다릅니다. SQL 구문 세부 사항을 MySQL로 조정해야합니다 (예 : TOP).