2011-07-04 101 views
2

也許你可以幫忙,我正在使用這種情況下的查詢,並且我正在嘗試對它進行mysql權重。它出什麼問題了?這種情況下SQL查詢有什麼問題?

SELECT * 
    FROM cronjob_reloaded 
    WHERE site IN ('site1.com', 'site2.com') 
ORDER BY (CASE site 
      WHEN 'site1.com' THEN 0.2 
      WHEN 'site2.com' THEN 0.8 ) * RAND() DESC 
    LIMIT 0 , 30 

MySQL表示:文件

1064 - 你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本4行

回答

3

這裏DESC LIMIT 0,30 * RAND())'使用附近的正確語法手冊是CASE的正確的語法

SELECT * 
FROM cronjob_reloaded 
WHERE site IN ('site1.com', 'site2.com') 
ORDER BY (
    CASE 
    WHEN site = 'site1.com' THEN 0.2 
    WHEN site = 'site2.com' THEN 0.8 
    END 
) * RAND() DESC 
LIMIT 0 , 30 
+0

+1相互傾慕 – Bohemian

+0

TY非常多,它的工作原理。 Becouse我有從我的數據庫中site1的許多條目我試圖創建一個SQL至少從站點1只有20%,其餘從站點2 – webmasters

3

案件必須年底前關閉:

CASE site 
WHEN 'site1.com' 
THEN 0.2 
WHEN 'site2.com' 
THEN 0.8 
END -- Added this END to your query's CASE 
0

一個可能的問題是,你還沒有使用END CASE。

變化:

CASE site 
WHEN 'site1.com' 
THEN 0.2 
WHEN 'site2.com' 
THEN 0.8 
) 

要:

CASE site 
WHEN 'site1.com' 
THEN 0.2 
WHEN 'site2.com' 
THEN 0.8 
END CASE 

參考:MySQL site