মাইএসকিউএলে সর্বোচ্চ দুটি মান কীভাবে পাবেন?


289

আমি চেষ্টা করেছি কিন্তু ব্যর্থ:

mysql> select max(1,0);
ত্রুটি 1064 (42000): আপনার এসকিউএল সিন্টেক্সে আপনার একটি ত্রুটি রয়েছে; ম্যানুয়াল পরীক্ষা করুন
ডান সিনট্যাক্সটি ব্যবহারের জন্য এটি আপনার মাইএসকিউএল সার্ভার সংস্করণের সাথে সম্পর্কিত 
লাইন 1 এ '0)' এর নিকটে

উত্তর:


527

দুর্দান্ত ব্যবহার করুন ()

উদাহরণ:

SELECT GREATEST(2,1);

দ্রষ্টব্য: যখনই কোনও একক মান শূন্য থাকে তখন এই ফাংশনটি সর্বদা শূন্য হয় (ব্যবহারকারী @ সংঘভি 7 কে ধন্যবাদ)


41
একটি বিষয় মনে রাখা দরকার যে যখনই কোনও একক মান সেই সময়ে নাল থাকে তবে এই ফাংশনটি সর্বদা উত্তর হিসাবে নাল ফেরায়!
সংঘভি 7

33
এছাড়াও আছেLEAST
বোবোবোলো

1
আমি কীভাবে প্যারামিটার হিসাবে একটি উপ-ক্যোয়ারী চালাতে পারি GREATESTযাতে আমি একটি চূড়ান্ত কলামটির মান পেতে পারি
কাদির

17
নাল দিয়ে সমস্যা রোধ করতে আপনি ifnull ব্যবহার করতে পারেন। উদাহরণস্বরূপ select greatest(date1, ifnull(date2, "0000-00-00 00.00:00")) from table1 where date2 is null;আপনি তারিখ 1 পাবেন।
ক্রিস্টোফ গ্রিমার-ডায়েটারিচ

1
কিছু মান যদি শূন্য থাকে তবে আপনি এটি করতে পারেনGREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
শিন দ্য বিয়ান

27

সারিগুলির একটি সেট জুড়ে কলামের সর্বাধিক মান পেতে:

SELECT MAX(column1) FROM table; -- expect one result

প্রতিটি সারির জন্য কলাম, আক্ষরিক বা ভেরিয়েবলগুলির সেটের সর্বাধিক মান পেতে:

SELECT GREATEST(column1, 1, 0, @val) FROM table; -- expect many results

3
এর সাথে নাল মানগুলি সন্ধান করুন GREATEST। যে কোনও নাল মান হ'ল ফাংশনটি নাল ফেরায়। এটি প্রতিরোধ করতে, আপনি এটি করতে পারেনGREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
শিন দ্য বিয়ান

5

আপনি ননযোগ্য ক্ষেত্রগুলি সহ গ্রেটস্ট ফাংশনটি ব্যবহার করতে পারেন । যদি এই মানগুলির (বা উভয়) কোনওটি নুল হতে পারে তবে এটি ব্যবহার করবেন না (ফলাফলটি নুল হতে পারে)।

select 
    if(
        fieldA is NULL, 
        if(fieldB is NULL, NULL, fieldB), /* second NULL is default value */
        if(fieldB is NULL, field A, GREATEST(fieldA, fieldB))
    ) as maxValue

আপনি NULL কে আপনার পছন্দসই ডিফল্ট মানতে (যদি উভয় মানই NULL হয়) পরিবর্তন করতে পারেন।


1
এজন্য আমি মাইএসকিউএলকে সত্যই ঘৃণা করি। এত সাধারণ কাজটি করার জন্য কী বিশাল পরিমাণ কাজ work
মনিকা হেডনেক

9
এটি সহজেই প্রতিস্থাপন করা যেতে পারে select COALESCE(GREATEST(fieldA, fieldB),fieldA,fieldB) as maxValue। এটি
অত্যধিক

1
কিছু মান যদি শূন্য হতে পারে তবে আপনি এটি করতে পারেনGREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
শিন দ্য বিয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.