2011-05-24 71 views
0

工作,我有以下查詢MySQL查詢只適用於某些版本

SELECT * 
FROM (
    (
     SELECT 
     DATEDIFF(birthdate, CONCAT(YEAR(birthdate), '/1/1')) AS Distance, 
     DATEDIFF(CURDATE(), CONCAT(YEAR(CURDATE()), '/1/1')) AS TodaysDistance, 
     db.Contact.* 
     FROM 
     db.Contact 
     WHERE 
     db.Contact.id IN (
      SELECT 
      db.addressbook.contactid 
      FROM 
      db.addressbook 
      WHERE 
      db.addressbook.ownerid = 9 
     ) 
     ) AS DistanceTable 
    ) 
    WHERE 
    ABS(DistanceTable.Distance - DistanceTable.TodaysDistance) <= 7 
    ORDER BY 
    ABS(DistanceTable.Distance - DistanceTable.TodaysDistance) 
    LIMIT 0, 10; 

它加載我的聯繫人列表表的生日和我展示我的聯繫人名單上的下一個10個即將到來的生日。我的開發服務器是MySQL 5.0.51a,生產服務器是5.1.57,有沒有可能是版本問題?

編輯我並模擬完全一樣的環境我的本地PC上(同一PHP版本,同樣的MySQL版本,甚至安裝了所有我運行Debian萊尼像服務器虛擬機,我不斷收到服務器上的同樣的問題,而在本地機器上就像一個魅力)

我做的另一件事是測試服務器的PhpMyAdmin工具上的查詢,它工作正常,所以我猜這是PHP過程的憑據問題,任何想法?

+0

是否有錯誤?它在開發服務器上做什麼,它不在生產服務器上執行? – Jrod 2011-05-24 18:02:13

+0

是在服務器上我有一個「SQLSTATE [42000]:語法錯誤或訪問衝突:1142」 – 2011-05-24 18:03:45

+0

看到作爲語句在您的開發服務器上運行我會說這是一個訪問衝突,而不是語法錯誤。錯誤信息的尾部是否還有其他內容? – Jrod 2011-05-24 18:09:21

回答