Rumah > Soal Jawab > teks badan
Saya mahu mengurangkan nilai yang terkandung dalam medan (integer atau lungsur) sebanyak 1. Saya mencuba 3 pertanyaan ini dan tiada satu pun daripada mereka yang berfungsi seperti yang diharapkan:
UPDATE `my_table` SET `my_field` = 'my_field-1' WHERE `other` = '123' UPDATE `my_table` SET `my_field` = 'my_field' -1 WHERE `other` = '123' UPDATE `my_table` SET `my_field` = '-1' WHERE `other` = '123'
Saya mencari di sini dan di Google tetapi semua penyelesaian yang saya temui adalah serupa. Sebarang idea mengapa ini tidak berfungsi di pihak saya?
P粉2686548732023-10-26 10:14:06
Cuba alih keluar petikan tunggal daripada nama lajur jika tidak, ia akan dianggap sebagai rentetan "my_field-1" atau gunakan tanda belakang di sekeliling nama lajur
UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'
atau
UPDATE my_table SET `my_field` = `my_field` - 1 WHERE `other` = '123'
P粉7627302052023-10-26 09:15:35
Anda tidak memerlukan sebarang sebut harga.
UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'
Untuk memahami, ini seperti emosi klasik dalam mana-mana bahasa: “Saya mahu my_field
等于 my_field
(nilai semasa) tolak 1
.
Jika dipetik, ia bermaksud "Saya mahu my_field
my_field sama dengan rentetan:
'my_field-1'
'my_field-1' (untuk pertanyaan pertama anda) 'my_field' - 1
'my_field' - 1 (Ini tidak masuk akal, sekurang-kurangnya bagi saya: apakah hasil penolakan integer daripada rentetan?) '-1'
'-1', jika medan anda mempunyai jenis simbolik INTEGER, nilai akan ditukar kepada -1. Dalam sesetengah kes (jika nama medan anda mempunyai ruang atau aksara khas di dalamnya) anda boleh mengelilingi nama medan dengan "backtick":
UPDATE my_table SET `my_field` = `my_field` - 1 WHERE other = '123'