একটি ক্যোয়ারিতে বিভিন্ন মান সহ একাধিক সারি আপডেট করা


12

আমি বিভিন্ন মান সহ একাধিক সারি কীভাবে আপডেট করব তা বোঝার চেষ্টা করছি এবং আমি এটি পাই না। সমাধানটি সর্বত্র তবে আমার কাছে এটি বোঝা মুশকিল।

উদাহরণস্বরূপ, 1 টি ক্যোয়ারীতে দুটি আপডেট:

UPDATE mytable SET fruit='orange', drink='water', food='pizza' WHERE id=1;

UPDATE mytable SET fruit='strawberry', drink='wine', food='fish' WHERE id=2;

আমি বুঝতে পারি না কেস WHEN .. তখন ... শেষের দিকে কী কাজ করে এবং কীভাবে এটি ব্যবহার করব।

যদি কেউ এই বিষয়ে আমাকে সহায়তা করতে পারে তবে আশ্চর্য।

উত্তর:


11
UPDATE mytable SET
    fruit = CASE WHEN id=1 THEN 'orange' ELSE 'strawberry' END,
    drink = CASE WHEN id=1 THEN 'water'  ELSE 'wine'       END,
    food  = CASE WHEN id=1 THEN 'pizza'  ELSE 'fish'       END
WHERE id IN (1,2);

ব্যক্তিগতভাবে, ব্যবহার করে CASE WHEN THEN ENDআনাড়ি দেখাচ্ছে।

আপনি যদি আইএফ ফাংশনটি ব্যবহার করে এটি কোড করতে পারেন ।

UPDATE mytable SET
    fruit = IF(id=1,'orange','strawberry'),
    drink = IF(id=1,'water','wine'),
    food  = IF(id=1,'pizza','fish')
WHERE id IN (1,2);

একবার চেষ্টা করে দেখো !!!

ক্যাভেট: CASE WHEN THEN ENDএকাধিক মানগুলির সাথে ডিল করার সময় কেবল কার্যকর (2 এর বেশি)


ভাল লাগল, আমি যদি এই কাজটি সম্পর্কে জানতাম না। আপনি কেবল ব্যাখ্যা করতে পারেন: = আইএফ (আইডি = 1, আপনার
এটির

4
সাইন কোয়েরিতে প্রায় 100k রেকর্ড আপডেট করার জন্য আমি কি এটি ব্যবহার করতে পারি?
এএমবি

4

INSERT ... ON DUPLICATE KEY UPDATE

আপনি যদি দুটি সারির চেয়ে বেশি আপডেট করতে চান তবে আপনাকে খুব জটিল শর্ত লিখতে হবে। এই ক্ষেত্রে আপনি INSERT ... ON DUPLICATE KEY UPDATEপদ্ধতির ব্যবহার করতে পারেন ।

INSERT into `mytable` (id, fruit, drink, food)
VALUES
    (1, 'orange', 'water', 'pizza'),
    (2, 'strawberry', 'wine', 'fish'),
    (3, 'peach', 'jiuce', 'cake')
ON DUPLICATE KEY UPDATE
    fruit = VALUES(fruit), 
    drink = VALUES(drink), 
    food = VALUES(food);

3
মনে রাখবেন যে আপনি যদি স্বয়ত্তর ব্যবহার করে থাকেন তবে এটি টেবিলের জন্য স্বতঃসংশোধের মান বাড়িয়ে তোলে। উচ্চ থ্রুপুট টেবিলগুলির জন্য যা অনাকাঙ্ক্ষিত হতে পারে। আরও তথ্য স্ট্যাকওভারফ্লো.com
23517191/
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.