也许你可以帮忙,我正在使用这个案例查询,我正在尝试使用它进行mysql加权。怎么了?
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服务器版本对应的手册,以便在')* RAND()DESC附近使用正确的语法 第4行限制0,30'
答案 0 :(得分:3)
这是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
答案 1 :(得分:3)
CASE必须以END结束:
CASE site
WHEN 'site1.com'
THEN 0.2
WHEN 'site2.com'
THEN 0.8
END -- Added this END to your query's CASE
答案 2 :(得分: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