Mysql 什么';这种情况下SQL查询有什么问题?

Mysql 什么';这种情况下SQL查询有什么问题?,mysql,sql,case,mysql-error-1064,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 ,

也许你能帮上忙,我正在使用这个案例查询,我正在尝试用它来做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服务器版本对应的手册,了解使用near')*RAND()DESC的正确语法 第4行的0,30'极限


下面是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 

箱子必须以以下方式关闭:

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

一个可能的问题是您没有使用END CASE

更改:

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


请参阅:

ty非常好,它很有效。因为我的数据库中有很多来自site1的条目,所以我试图创建一个sql,其中只有20%来自site1,其余的来自site2
CASE site
WHEN 'site1.com'
THEN 0.2
WHEN 'site2.com'
THEN 0.8
END CASE