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


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.