আমার একটি পরিস্থিতি ছিল যেখানে দুটি ক্ষেত্র (উভয় বিদেশী কী) অনুযায়ী টেবিলে আপডেট বা সন্নিবেশ করার দরকার ছিল যার উপর আমি একটি অনন্য বাধা নির্ধারণ করতে পারি না (সুতরাং অন্তর্ভুক্ত করুন ... দ্বিপক্ষীয় কী আপডেটে কাজ করবে না)। এখানে আমি যা ব্যবহার করে শেষ করেছি:
replace into last_recogs (id, hasher_id, hash_id, last_recog)
select l.* from
(select id, hasher_id, hash_id, [new_value] from last_recogs
where hasher_id in (select id from hashers where name=[hasher_name])
and hash_id in (select id from hashes where name=[hash_name])
union
select 0, m.id, h.id, [new_value]
from hashers m cross join hashes h
where m.name=[hasher_name]
and h.name=[hash_name]) l
limit 1;
এই উদাহরণটি আমার একটি ডাটাবেস থেকে আঁকানো হয়েছে, ইনপুট প্যারামিটারগুলি (দুটি নাম এবং একটি নম্বর) [হ্যাশ_নাম], [হ্যাশ_নাম], এবং [নতুন_মূল্য] দিয়ে প্রতিস্থাপন করা হয়েছে। নেস্টেড নির্বাচন করুন ... সীমাবদ্ধ 1 বিদ্যমান রেকর্ডের মধ্যে প্রথমটি টেনে নেয় বা একটি নতুন রেকর্ড (সর্বশেষ_আরকোগস.আইডি একটি স্বতঃসংশোধন প্রাথমিক কী)) এবং এটি প্রতিস্থাপনের মধ্যে মান ইনপুট হিসাবে ব্যবহার করে।