আমি প্রথমে একটি নির্দিষ্ট মান দিয়ে কীভাবে সারিগুলি ফিরিয়ে দেব?


124

আমি চাইছি যে আমার সন্ধানটি টেবিলের সারিগুলি ফিরিয়ে দিন যেখানে কলামে একটি নির্দিষ্ট মান রয়েছে এবং তারপরে বাকী সারিগুলি বর্ণমুখে ফিরিয়ে দেওয়া উচিত।

আমার কাছে যদি এই উদাহরণের মতো কোনও টেবিল থাকে:

 - Table: Users
 - id - name -  city
 - 1    George  Seattle
 - 2    Sam     Miami
 - 3    John    New York
 - 4    Amy     New York
 - 5    Eric    Chicago
 - 6    Nick    New York

এবং এই টেবিলটি ব্যবহার করে আমি আমার ক্যোয়ারিতে প্রথমে নিউ ইয়র্কযুক্ত সারিগুলি ফিরিয়ে আনতে চাই এবং তারপরে বাকী সারিগুলি শহর দ্বারা বর্ণানুক্রমিক। এটি কি কেবল একটি ক্যোয়ারী ব্যবহার করে করা সম্ভব?


আপনি যদি পারেন তবে দ্বিতীয়টির গ্রহণযোগ্য উত্তরটি পরিবর্তন করার বিষয়টি বিবেচনা করুন, কারণ প্রথমটি কেবল এমএসএসকিউএল এর জন্য কাজ করে, এমএসএসকিউএলের জন্য নয়।
ম্যাজিচ

সম্পন্ন. আমার মূল প্রশ্নটি মাইএসকিউএল সম্পর্কে ছিল, তবে ট্যাগগুলি যেভাবেই প্রতিফলিত হয়নি।
ফিক্সো

ধন্যবাদ. আমার এই সমস্যার জন্য একইরকম কিছু করার প্রয়াসে আমি আজ সকালে এলাম। :)
ম্যাগিশ

উত্তর:


195

এসকিউএল সার্ভার, ওরাকল, ডিবি 2 এবং অন্যান্য অনেক ডাটাবেস সিস্টেমে আপনি এটি ব্যবহার করতে পারেন:

ORDER BY CASE WHEN city = 'New York' THEN 1 ELSE 2 END, city

1
ধন্যবাদ! এমএসএসকিউএলে আমাকে সহায়তা করেছে
রেজিক্সো

এটি আসলে যে কোনও এসকিউএল ডাটাবেসে কাজ করে (এবং এটি আমার মতে গৃহীত উত্তরের চেয়ে অনেক ক্লিনার সমাধান)
a_horse_with_no_name

2
ওরাকলে আমার জন্য কাজ করে।
MonkeyWithDarts

1
এবং 'নিউ ইয়র্ক' (বা অন্য কোনও মান) শেষ রাখার জন্য আমার যা দরকার ছিল, তার জন্য কেবল 1 এবং 2 কে অদলবদল করুন ... যখন শহরটি = 'নিউইয়র্ক' এর পরে 2
এলএসই

4
ELSE 2অধ্যায় মানে যে নিউ ইয়র্ক মান 1 পায় যখন সব অন্যান্য মান যতটা সাজানোর ক্রম সংশ্লিষ্ট হয় মান 2. পেতে ... অন্তত।
রব ফারলে

106

আপনার এসকিউএল ডায়ালেক্ট যদি বুলিয়ান এক্সপ্রেশনকে সংখ্যাসূচক মান হিসাবে বিবেচনা করতে যথেষ্ট বুদ্ধিমান হয় তবে আপনি ব্যবহার করতে পারেন:

SELECT *
FROM `Users`
ORDER BY (`city` = 'New York') DESC, `city`

1
@ মেহরদাদআফশারি: না, এমএসএসকিউএল ORDER BYদফায় সমতা পরীক্ষার প্রক্রিয়া করতে খুব বোকা ।
বিশৃঙ্খলা

@ এ_হর্স_বিহীন_নাম_নাম: আপনি কি এমএসএসকিউএলের বিরুদ্ধে উপরের প্রশ্নটি চালানোর চেষ্টা করেছেন?
বিশৃঙ্খলা

11
@ চাওস: উপরোক্ত বিবৃতিটি এসকিউএল সার্ভারের সাথে প্রকৃতপক্ষে চালিত হয় না , তবে এটি কারণ সিনট্যাক্সটি মানসম্মত নয় এবং এটি কেবল মাইএসকিউএল জন্য কাজ করে। একটি CASEবিবৃতি ব্যবহার করার সময় (যা স্ট্যান্ডার্ড এসকিউএল) এসকিউএল সার্ভার খুব ভালভাবে ক্লজটিতে একটি এক্সপ্রেশন ব্যবহার করতে পারে ORDER BY। " সমতুল্য পরীক্ষার প্রক্রিয়া করতে খুব বোকা " কেবল ভুল। যদি মোটেওtrue1 এটি পড়তে হবে: " মাইএসকিউএল এর বুলিয়ানের মান (এক) এর অন্তর্নিহিত কাস্টিং সমর্থন করে না "
a_horse_with_no_name

@ এসরা_92: তারপরে আপনার কাছে কোনও এসকিউএল উপভাষা নেই যা এটি পরিচালনা করতে পারে এবং আপনার রব ফারলির উত্তর দরকার।
বিশৃঙ্খলা

5
ORDER BY id = 123 DESC, name ASC
পোস্টগ্রিসের

4

আমার উত্তরটি পুরানো হতে পারে এবং প্রয়োজন নেই তবে কারওর জন্য পৃথক পদ্ধতির প্রয়োজন হতে পারে, সুতরাং এটি এখানে পোস্ট করুন।

আমার একই প্রয়োজনীয়তা এটি বাস্তবায়িত হয়েছিল, আমার জন্য কাজ করেছিল।

Select * from Users
ORDER BY
(CASE WHEN city = 'New York' THEN 0 ELSE 1 END), city
GO

পুনশ্চ

এটি এসকিউএল এর জন্য

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