2012-09-06 88 views
0

我有以下查詢工作在sql server managemengt工作室,但它似乎不工作在phpmyadmin,任何人都可以弄清楚什麼是錯的,它給出了這個錯誤信息「#1064 - 您的SQL語法錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以找到正確的語法,以便在第1行的'1 google_rank FROM eig_ranking mi WHERE mi.project_id = m.project_'處使用「獲取微軟服務器2008 sql查詢工作在phpmyadmin

I我使用MySQL版本:5.5.20和PHP版本5.3.13和微軟服務器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的,那麼你ne編輯寫的MySQL語法,而不是Microsoft SQL Server的語法 - 與LIMIT取代TOP,並且DATEDIFF參數與MySQL格式,GETDATE()NOW()

+0

我以前試過這個,我知道Mysql的now()函數。我用限制取代了top,但是在第7行的'LIMIT 1 google_rank FROM eig_ranking mi WHERE mi.project_id = m.pr'附近出現語法錯誤 – petergt

+0

LIMIT在MySQL中結束。即:'ORDER BY project_id LIMIT 1' – podiluska

+0

謝謝,我也忘了在0之後加一個右括號 – petergt

1

有關於MySQL沒有SELECT TOP n表達。

一般來說,在SQL Server上的語法與在MySQL上有一些不同。您必須將SQL語法細節調整爲MySQL(例如TOP)。