Что не так с этим запросом SQL? - PullRequest
2 голосов
/ 04 июля 2011

может быть, вы можете помочь, я использую этот случай запроса, и я пытаюсь сделать 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 LIMIT 0, 30' в строке 4

Ответы [ 3 ]

3 голосов
/ 04 июля 2011

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
3 голосов
/ 04 июля 2011

Вот правильный синтаксис 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 голосов
/ 04 июля 2011

Одной из возможных проблем является то, что вы не использовали 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...