2017-06-24 81 views
1

對於我的項目,我有一個要求,即必須以降序顯示除第一條記錄以外的所有記錄。我有點混亂。不管怎麼說,我曾嘗試以下:查詢以顯示除初始記錄以外的記錄

SELECT * FROM ins_nr nl WHERE nl.nl_status = '2' ORDER BY nl.nl_id DESC 

這裏,i有一個表稱爲ins_nr這將顯示所有與status 2和id哪個是主鍵(唯一)的記錄。完全顯示在desc的順序。

我不想單獨從頂部的第一條記錄。我該怎麼辦?如何修改上面的查詢..?

+0

應該如何在第一個記錄得到整理呢? –

+0

OFFSET 1 LIMIT 1 QUADRILLION – Strawberry

+0

@DarshanMehta,我不知道,最新記錄/我的項目不需要第一個記錄 – Keynes

回答

1
Use OFFSET. Then you can skip 1 records and select the remaining ones until the end. 

實施例:

SELECT * FROM ins_nr nl WHERE nl.nl_status = '2' 
     ORDER BY nl.nl_id DESC LIMIT 99999999999 OFFSET 1; 

OR(也可以使用更短的語法來實現相同的結果:)

$sql = "SELECT * FROM table_name LIMIT 1, 999999999"; 
+0

'附近使用的正確語法。對於上述查詢,如何通過給出'OFFSET' – Keynes

+0

@Keynes來省略最後一個。您試試這個嗎? –

+1

@凱恩斯..對於參考閱讀本:https://www.w3schools.com/php/php_mysql_select_limit.asp –

0

您在尋找offset條款。這看起來像:

SELECT * 
FROM ins_nr nl 
WHERE nl.nl_status = '2' 
ORDER BY nl.nl_id DESC 
LIMIT 999999999 OFFET 1; 

不幸的是,LIMIT是必需的。對於這種情況,傳統上只需要投入很多。

此外,如果nl_status是數字,則使用nl.nl_status = 2。不要將字符串與數字進行比較。

+0

錯誤代碼:1064 您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以找到在'OFFSET 1 – Keynes

0

可以生成動態ROWNUM並對其進行過濾以省略第一行,例如:

SELECT * 
FROM (
    SELECT nl.*, @r := @r + 1 AS `rn` 
    FROM ins_nr nl, (SELECT @r := 0) 
    WHERE nl.nl_status = '2' 
    ORDER BY nl.nl_id DESC 
) a 
WHERE a.rn > 1; 
0

另一種方式是從子查詢中獲得最大的ID,並把它在一個地方clausole