2013-06-26 2 views
0

Я надеюсь получить десять последних патчей, представленных (топ 10 patchID desc) Начиная с этого запроса, я получаю сообщение об ошибке 10. Ошибка syntax error, unexpected NUM, expecting END_OF_INPUT, or ';'. Может возникнуть эта ошибка в следующем запросе?Выберите 10 самых последних вещей, используя mysql

SELECT TOP 10 synth.* 
FROM (
    SELECT p.`id`, 
     p.`patchName`, 
     p.`description`, 
     p.`tfsID`, 
     p.`codeRelease`, 
     s.`name`, 
     d.`deployStatus`, 
     d.`deployedDate`, 
     t.`testedStatus`, 
     t.`testedDate` 
    FROM `patches` AS p 
    JOIN `deployed` AS d ON p.`id` = d.`PatchID` 
    JOIN `servers` AS s ON d.`serverID` = s.`id` 
    JOIN `tested` AS t ON p.`id` = t.`patchID` 
) synth 
ORDER BY synth.id DESC 

ответ

7

TOP 10 является MS SQL определенная вещь, в MySQL они используют LIMIT вместо этого.

SELECT p.`id`, 
    p.`patchName`, 
    p.`description`, 
    p.`tfsID`, 
    p.`codeRelease`, 
    s.`name`, 
    d.`deployStatus`, 
    d.`deployedDate`, 
    t.`testedStatus`, 
    t.`testedDate` 
FROM `patches` AS p 
JOIN `deployed` AS d ON p.`id` = d.`PatchID` 
JOIN `servers` AS s ON d.`serverID` = s.`id` 
JOIN `tested` AS t ON p.`id` = t.`patchID` 
ORDER BY p.`id` DESC 
LIMIT 10 

Синтаксис для ограничения изменяется совсем немного на сервере, вот обзор:

Начиная со строки 100 показывает 10 результатов (т.е. 101, 102, 103 ...)

PostgreSQL, MySQL and DB2: SELECT * FROM table LIMIT 10 OFFSET 100 
Informix: SELECT SKIP 100 FIRST 10 FROM table 
Microsoft SQL Server and Access: SELECT TOP 10 * FROM table -- skipping the offset here as it's a pain, search for it if you need it :) 
Oracle: SELECT * FROM (SELECT *, ROW_NUMBER() OVER ORDER BY id) rnk FROM table) WHERE rnk BETWEEN 100 AND 110 
+0

Удивительное спасибо! Таймер составляет 3 минуты для принятия ответа – mhopkins321

+0

Спасибо :) Я добавил несколько примеров для других баз данных, просто на всякий случай, если вы сочтете это полезным – Wolph