2014-04-09 126 views
1

我試圖更新sqlite中只有10條按日期排序的記錄。在Sqlite中更新查詢

我正在使用此查詢,但無法繼續進行進一步的異常處理。

UPDATE TABLENAME SET COLUMMANGE = 'VALUE' WHERE 1 LIMIT 10 ORDER BY COLUMNNAME ASC 
+0

檢查SQL的基本知識,請。 –

+0

WHERE是條件,所以你應該寫'WHERE ID = 1',只是'WHERE 1'是無效的語法。 – Kedarnath

回答

3

我假設你有一個字段名爲ID在你的餐桌,在此基礎上查詢以下列方式更新10最新記錄應該做的,

UPDATE TABLENAME SET COLUMMANGE = 'VALUE' WHERE 
ID in (SELECT ID from TABLENAME ORDER BY COLUMNNAME DESC LIMIT 10); 

這裏內部查詢將選擇10個最新記錄id從桌子上。這些Id將傳遞給外部更新查詢。

1

我相信你需要的嵌套查詢首先獲取要更新行的主鍵(或其他鍵),而且比只更新那些行。嘗試是這樣的:

UPDATE TABLENAME SET COLUMMANGE='VALUE' 
WHERE id IN (
    SELECT id FROM (
     SELECT id FROM TABLENAME 
     WHERE <YOUR CONDITION> 
     ORDER BY COLUMNNAME ASC 
     LIMIT 10 
    ) 
); 

這也是在這裏,如果你想了解更多的細節討論:update multiple rows using limit in mysql?

但真的覺得如果你真的想要這樣的行爲。此外,WHERE 1不是有效的SQL語法的一部分。

+0

WHERE 1'有效(但是多餘)。 –

1

嘗試此查詢

UPDATE TABLE_NAME SET COLUMN_NAME = 'VALUE' WHERE PRIMARYKEY_COLUMN in (SELECT PRIMARYKEY_COLUMN from TABLE_NAME ORDER BY COLUMNNAME DESC LIMIT 10); 
  • PRIMARY KEY列是強制性此表中。

  • 上面的查詢結果的前10條記錄按降序排列