দুটি কলাম দ্বারা একটি মাইএসকিউএল টেবিল অর্ডার করুন


228

আমি কীভাবে দুটি কলাম দ্বারা একটি মাইএসকিউএল টেবিলটি বাছাই করব?

আমি যা চাই তা হ'ল নিবন্ধগুলি প্রথমে সর্বাধিক রেটিং অনুসারে বাছাই করা হয়, তারপরে অতি সাম্প্রতিক তারিখ। উদাহরণস্বরূপ, এটি একটি নমুনা আউটপুট হবে (বামে # টি রেটিং, তারপরে নিবন্ধের শিরোনাম, তারপরে নিবন্ধের তারিখ)

50 | এই নিবন্ধ শিলা | ফেব্রুয়ারী 4, 2009
35 | এই নিবন্ধটি বেশ ভাল | ফেব্রুয়ারি 1, 2009
5 | এই নিবন্ধটি এত গরম না | 25 জানুয়ারী, 2009

প্রাসঙ্গিক এসকিউএল আমি ব্যবহার করছি:

ORDER BY article_rating, article_time DESC

আমি এক বা অন্য অনুসারে বাছাই করতে পারি, তবে উভয়ই নয়।

উত্তর:


480

ডিফল্ট বাছাই আরোহণ হয়, আপনার দুটি আদেশে আপনার কীওয়ার্ড ডিইএসসি যুক্ত করতে হবে:

ORDER BY article_rating DESC, article_time DESC

অস্বাভাবিক. যখন আমার দুটি কলাম রয়েছে, নাম এবং মোট এবং আমি নাম অনুসারে এবং DESC দ্বারা মোট বর্ণানুক্রমিক অর্ডার করতে চাই, তবে আমি কেবল দেখতে পাচ্ছি, এটি নাম অনুসারে অর্ডার করা হয়েছিল, তবে মোটে নয়
ইউজিন

আমি সংখ্যার ক্ষেত্রে বিনা কারণে (-1) * ফিল্ড 1, ফিল্ড 2 দিয়ে হ্যাক করছি ... ধন্যবাদ
আসাদ হাসান

হাহাহা .... একটি ভাল ক্যোয়ারী নয়, কারণ আপনি যদি চেষ্টা করেন তবে কখনই "খালি" মান বিভাগটি পুনরায় অর্ডার করতে পারবেন না ... 2009 সালে দুর্দান্ত চেষ্টা করুন .. তবে 2015 সালে সঠিকভাবে কাজ করবেন না;), সঠিকটি "3" "বা" 2 "সাব ক্যোয়ারী
4'16

এই জাতীয় জিজ্ঞাসা আমার ক্ষেত্রে কাজ করছে না .. এই ক্ষেত্রে, আমি সিটি সিলেক্ট করতে চাই না আলাদা সিটি, দেশের গ্রাহকদের কাছ থেকে দেশীয় দেশ, সিটি ডেস্কের আদেশ অনুসারে;
Pra_A

4
আমি জানি না কেন এটি উত্তর হিসাবে পরীক্ষা করা হয়েছে তা এখনও তা নয়। এটি প্রথম কলাম অনুসারে বাছাই করা হয় তবে দ্বিতীয়টি একই সাথে নয়।
ভদ্রলোক

34
ORDER BY article_rating, article_time DESC

একই রেটিং সহ দুটি নিবন্ধ থাকলেই নিবন্ধ_কাল অনুসারে বাছাই করা হবে। আপনার উদাহরণে আমি দেখতে পাচ্ছি, ঠিক এটি ঘটে happens

 primary sort                         secondary sort 
1.  50 | This article rocks          | Feb 4, 2009    3.
2.  35 | This article is pretty good | Feb 1, 2009    2.
3.  5  | This Article isn't so hot   | Jan 25, 2009   1.

তবে বিবেচনা করুন:

 primary sort                         secondary sort 
1.  50 | This article rocks          | Feb 2, 2009    3.
1.  50 | This article rocks, too     | Feb 4, 2009    4.
2.  35 | This article is pretty good | Feb 1, 2009    2.
3.  5  | This Article isn't so hot   | Jan 25, 2009   1.

এই উত্তরটি আমাকে সাহায্য করেছিল T @ টমলাককে ধন্যবাদ
জয়ানী সুমুদিনী

12
ORDER BY article_rating ASC , article_time DESC

DESCশেষে উভয় কলামের অবতরণ অনুসারে বাছাই করা হবে। আপনি ASCঅন্যথায় এটি চান কিনা আপনাকে নির্দিষ্ট করতে হবে


8

এটি সম্ভবত এমন কাউকে সহায়তা করবে যিনি দুটি কলাম দ্বারা টেবিল বাছাইয়ের উপায় খুঁজছেন, তবে প্যারালেল উপায়ে। এটি সামগ্রিক বাছাই ফাংশন ব্যবহার করে দুটি ধরণের একত্রিত করার অর্থ। এটি খুব কার্যকর যখন উদাহরণস্বরূপ ফুলটেক্সট অনুসন্ধান ব্যবহার করে নিবন্ধগুলি পুনরুদ্ধার করা এবং নিবন্ধ প্রকাশের তারিখ সম্পর্কিত।

এটি কেবল উদাহরণস্বরূপ, তবে আপনি ধারণাটি ধরলে আপনি ব্যবহারের জন্য অনেকগুলি মোট কার্যকারিতা খুঁজে পেতে পারেন। এমনকি এক থেকে দ্বিতীয় সেকেন্ডটি পছন্দ করতে আপনি কলামগুলি ওজন করতে পারেন। খনিটির কার্যকারিতা উভয় প্রকারের থেকে চূড়ান্ত রূপ নেয়, সুতরাং সর্বাধিক মূল্যবান সারি শীর্ষে থাকে।

দুঃখিত, যদি এই কাজটি করার সহজতর সমাধান থাকে তবে আমি এর সন্ধান পাই নি।

SELECT
 `id`,
 `text`,
 `date`
 FROM
   (
   SELECT
     k.`id`,
     k.`text`,
     k.`date`,
     k.`match_order_id`,
     @row := @row + 1 as `date_order_id`
     FROM
     (
       SELECT
         t.`id`,
         t.`text`,
         t.`date`,
         @row := @row + 1 as `match_order_id`
         FROM
         (
           SELECT
             `art_id` AS `id`,
             `text`   AS `text`,
             `date`   AS `date`,
             MATCH (`text`) AGAINST (:string) AS `match`
             FROM int_art_fulltext
             WHERE MATCH (`text`) AGAINST (:string IN BOOLEAN MODE)
             LIMIT 0,101
         ) t,
         (
           SELECT @row := 0
         ) r
         ORDER BY `match` DESC
     ) k,
     (
       SELECT @row := 0
     ) l
     ORDER BY k.`date` DESC
   ) s
 ORDER BY (1/`match_order_id`+1/`date_order_id`) DESC

34
ওহে আমার suchশ্বর আপনি এত সাধারণ প্রশ্নের জন্য কেন এমন কোড পোস্ট করেন?
বেন সিনক্লেয়ার

4

নিম্নোক্ত ক্রমে উভয় কলামের উপর নির্ভর করে আপনার ডেটা অর্ডার করবে নীচে।

ORDER BY article_rating DESC, article_time DESC

3
4 বছর পরে গৃহীত উত্তরের একটি অনুলিপি কীভাবে এই অনেকগুলি অগ্রগতি লাভ করবে?
স্ট্যাক Underflow

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