2017-12-30 77 views
1

いくつかの条件で値を更新する方法:私はMAX(ID)との電話「1234」と「値」欄を更新する必要が私は、次の表にしている

id - phone - value 
1 - 1234 - null 
2 - 4321 - null 
3 - 1234 - null 

id - phone - value 
1 - 1234 - null 
2 - 4321 - null 
3 - 1234 - *updated 

私が試しました次のクエリで回のこの多くを行うには:

cur.execute("UPDATE online_booking SET st1 = (%s) HAVING max(ID) and phone = (%s)", (st1, phone))

が、それは言います"HAVING"またはそれに近い文法エラー

答えて

0

HAVINGは、以前にGROUP BYを使用した場合にのみ使用できます。

あなたはこのクエリのみ1行を更新します UPDATE online_booking SET st1 = (%s) WHERE phone = (%s) ORDER BY ID DESC LIMIT 1

ような何かを探しています。

+0

おかげで、私は偉大な最大ID番号 –

1

あなたは、このようなサブクエリでidをフィルタリングする必要があります。

UPDATE online_booking 
SET st1 = '*update' 
WHERE id = (
    SELECT max(id) 
    FROM online_booking 
    WHERE phone = '1234') 
+0

、おかげでセルを更新する必要があります! –

関連する問題