MySQL كيفية إدراج سجل جديد أو تحديث حقل اعتمادا على ما إذا كان موجودا؟
-
19-09-2019 - |
سؤال
أحاول تنفيذ نظام تقييم حيث أحتفظ بالحقلين التاليين في جدول DB الخاص بي:
تصنيف (التصنيف الحالي) Num_rates (عدد التصنيفات المقدمة حتى الآن)
UPDATE `mytable`
SET rating=((rating*num_rates)+$theRating)/num_rates, num_rates=num_rates+1
WHERE uniqueCol='$uniqueCol'
المتغيرات هي من رمز PHP الخاص بي.
لذلك، في بعض الأحيان في بعض الأحيان، لا يوجد الخلاف مع Unquecol في DB، فكيف يمكنني أن أقوم بالبيان أعلاه إذا كان موجودا وإذا لم يفعل ذلك شيئا مثل هذا:
INSERT INTO `mytable`
SET rating=$theRating, num_rates=1, uniqueCol=$uniqueCol
المحلول
القي نظرة على إدراج ... على تحديث مفتاح مكررة.
يجب أن تبدو شيئا كهذا:
INSERT INTO mytable (rating, num_rates, uniqueCol)
VALUES ($theRating, 1, $uniqueCol)
ON DUPLICATE KEY UPDATE
rating=((rating*num_rates)+$theRating)/num_rates,
num_rates=num_rates+1;
تأكد من أن لديك UNIQUE index
أو PRIMARY KEY
على حسابك uniqueCol
.
لا تنتمي إلى StackOverflow