这个案例SQL查询有什么问题?

时间:2011-07-04 14:34:37

标签: mysql sql case mysql-error-1064

也许你可以帮忙,我正在使用这个案例查询,我正在尝试使用它进行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'

3 个答案:

答案 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