রেকর্ড এর জন্য
SELECT * FROM mytable WHERE id IN (1,2,3,4) ORDER BY FIELD(id,3,2,1,4);
পাশাপাশি কাজ করা উচিত কারণ আপনাকে WHEREধারাটিতে তালিকাটি অর্ডার করতে হবে না
এটি কীভাবে কাজ করে,
আপনি সব ধরণের অভিনব অর্ডার তৈরি করতে পারেন
উদাহরণস্বরূপ, আইএফ () ফাংশন ব্যবহার করে
SELECT * FROM mytable
WHERE id IN (1,2,3,4)
ORDER BY IF(FIELD(id,3,2,1,4)=0,1,0),FIELD(id,3,2,1,4);
এটি তালিকার শীর্ষে প্রথম 4 আইডি প্রদর্শিত হবে, অন্যথায়, এটি নীচে প্রদর্শিত হবে। কেন?
এর মধ্যে ORDER BYআপনি হয় 0 বা 1 পান।
- যদি প্রথম কলামটি 0 হয় তবে প্রথম 4 টি আইডির মধ্যে যে কোনওটিকে উপস্থিত করুন
- প্রথম কলামটি যদি 1 হয় তবে এটি পরে প্রদর্শিত হবে
প্রথম কলামে এটি ডিইএসসি দিয়ে ফ্লিপ করি
SELECT * FROM mytable
WHERE id IN (1,2,3,4)
ORDER BY IF(FIELD(id,3,2,1,4)=0,1,0) DESC,FIELD(id,3,2,1,4);
এর মধ্যে ORDER BY, আপনি এখনও 0 বা 1 পান।
- প্রথম কলামটি যদি 1 হয় তবে প্রথম 4 আইডির উপস্থিতি বাদে কিছু করুন।
- প্রথম কলামটি যদি 0 হয় তবে প্রথম 4 আইডিকে মূল ক্রমে উপস্থিত করুন
আপনার বাস্তব প্রশ্ন
আপনি যদি গুরুত্ব সহকারে এটিতে অন্তর্ভুক্ত করতে চান তবে বইয়ের 189 এবং 192 পৃষ্ঠাগুলি দেখুন

একটি সত্য গভীর ডুব জন্য।
সংক্ষেপে, একটি সি ++ শ্রেণি রয়েছে ORDER *order( ORDER BYঅভিব্যক্তি গাছ)। ইন JOIN::prepare, *orderনামে পরিচিত একটি ফাংশনে ব্যবহৃত হয় setup_order()। ক্লাসের মাঝখানে কেন JOIN? প্রতিটি ক্যোয়ারী, এমনকি একটি একক টেবিলের বিপরীতে একটি জিজ্ঞাসা সবসময়ই যোগিন হিসাবে প্রক্রিয়াজাত করা হয় (আমার পোস্টটি দেখুন কোনও জিন শর্ত এবং কোন শর্তের মধ্যে একটি কার্যকর করার পার্থক্য রয়েছে? )
এই সমস্ত জন্য উত্স কোড হয় sql/sql_select.cc
স্পষ্টতই, ORDER BYগাছটি মূল্যায়ন করতে চলেছে FIELD(id,3,2,1,4)। সুতরাং, 0,1,2,3,4 নম্বরগুলি এর সাথে জড়িত সারির একটি রেফারেন্স বহন করার সময় সাজানো মানগুলি।
SELECT *, FIELD(id,3,2,1,4) AS f FROM mytable WHERE id IN (3,2,1,4);তারপরে যুক্ত করুনORDER BY fবাORDER BY FIELD(id,3,2,1,4)আবার চেষ্টা করুন।