2012-04-04 14 views
1

このクエリが必要です。最後のレコードを更新していますが、mysqlクエリで構文エラーが見つかりません

UPDATE changes SET checked='' WHERE item_id = 119898 AND type = 'example_edit' AND checked != 'restored' ORDER BY id DESC LIMIT 1, 1 

データベースエコーは:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 1' at line 1 

1近くに何が間違っているのですか?

+0

をワーク・必要がありますが、そのクエリがそのエラーを引き起こしますか?多分コードに別のクエリがあります – safarov

+0

はい、私はphpmyadminでそれを行います – Qiao

答えて

0

標準更新staementあなたのケースのための

UPDATE [LOW_PRIORITY] [IGNORE] table_reference 
     SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... 
     [WHERE where_condition] 
     [ORDER BY ...] 
     [LIMIT row_count] 

この

UPDATE changes SET checked='' WHERE item_id = 119898 AND type = 'example_edit' AND checked != 'restored' ORDER BY id DESC LIMIT 1 

それは本当にあなたを助ける試してみてください、コードがテストされています。 更新の制限は、1,1などではない行のカウントのみを使用できます。

0

LIMITは、UPDATEでは使用できますが、行カウントのみで使用できます。 thisを参照してください。

LIMIT句は、更新可能な行数に制限を設けます。

だから、このクエリは

UPDATE 
    changes 
SET 
    checked = '' 
WHERE item_id = 119898 
    AND TYPE = 'example_edit' 
    AND checked != 'restored' 
ORDER BY id DESC 
LIMIT 1; 
+0

したがって、*最後に1つの*レコードを更新する方法はありません。次に、2つのクエリでIDを選択して更新します。 – Qiao

関連する問題