2011-07-04 67 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