簡體   English   中英

這個案例 SQL 查詢有什么問題?

[英]What's wrong with this case SQL query?

也許你可以幫忙,我正在使用這個案例查詢,我正在嘗試用它做 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 服務器版本相對應的手冊,以獲取在第 4 行的 ') * RAND() DESC LIMIT 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 必須以 END 結束:

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
)

至:

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

參考: MySQL網站

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM