2013-10-02 4 views
2

Я использую эту строку в моей базе данных MySQL:SQL USE INDEX Синтаксис ошибки

SELECT * FROM `dump` USE INDEX `time_desc` WHERE (`nodeId`=10047 AND `time`<=1377040709 AND `valid`=1) ORDER BY `time` DESC LIMIT 1; 

Я не могу понять, почему, но база данных возвращает следующее сообщение об ошибке:

[Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'time_desc WHERE nodeId =10048 AND time <=1377040709 AND valid =1 ORDER BY `ti' at line 1]

Любые мысли как как я могу это исправить?

+0

http://dev.mysql.com/doc/refman/5.1/en/index-hints.html Вам нужно заключить 'time_desc' в parens' (time_desc) ' –

ответ

2

Вы должны круглые скобки вокруг имени индекса

SELECT * 
FROM `dump` USE INDEX (`time_desc`) 
WHERE (`nodeId`=10047 AND `time`<=1377040709 AND `valid`=1) 
ORDER BY `time` DESC 
LIMIT 1; 
+0

Ударьте меня! :) +1 –

0

Попробуйте так: -

SELECT * FROM `dump` USE INDEX (`time_desc`) --Use paranthesis here 
WHERE (`nodeId`=10047 AND `time`<=1377040709 AND `valid`=1) 
ORDER BY `time` DESC 
LIMIT 1; 

Проверить это для reference.

Смежные вопросы