0

送信された最新の 10 個のパッチ (上位 10 個のパッチ ID の説明) を取得したいと考えています。以下のクエリから始めて、10. エラーはsyntax error, unexpected NUM, expecting END_OF_INPUT, or ';'です。以下のクエリでこのエラーが発生する可能性はありますか?

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
4

1 に答える 1

8

これTOP 10は MS SQL 固有のものであり、MySQLLIMITでは代わりに使用されます。

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
于 2013-06-26T19:03:13.427 に答える