我試圖更新sqlite中只有10條按日期排序的記錄。在Sqlite中更新查詢
我正在使用此查詢,但無法繼續進行進一步的異常處理。
UPDATE TABLENAME SET COLUMMANGE = 'VALUE' WHERE 1 LIMIT 10 ORDER BY COLUMNNAME ASC
我試圖更新sqlite中只有10條按日期排序的記錄。在Sqlite中更新查詢
我正在使用此查詢,但無法繼續進行進一步的異常處理。
UPDATE TABLENAME SET COLUMMANGE = 'VALUE' WHERE 1 LIMIT 10 ORDER BY COLUMNNAME ASC
我假設你有一個字段名爲ID在你的餐桌,在此基礎上查詢以下列方式更新10最新記錄應該做的,
UPDATE TABLENAME SET COLUMMANGE = 'VALUE' WHERE
ID in (SELECT ID from TABLENAME ORDER BY COLUMNNAME DESC LIMIT 10);
這裏內部查詢將選擇10個最新記錄id從桌子上。這些Id將傳遞給外部更新查詢。
我相信你需要的嵌套查詢首先獲取要更新行的主鍵(或其他鍵),而且比只更新那些行。嘗試是這樣的:
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語法的一部分。
WHERE 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條記錄按降序排列
檢查SQL的基本知識,請。 –
WHERE是條件,所以你應該寫'WHERE ID = 1',只是'WHERE 1'是無效的語法。 – Kedarnath