মাইএসকিউএল থেকে শেষ এন সারি নির্বাচন করুন


121

আমি মাইএসকিউএল ডাটাবেস থেকে আইডি নামক আইডি যা প্রাথমিক কী হিসাবে অন্তিম 50 টি সারি নির্বাচন করতে চাই । লক্ষ্য ছাড়িয়ে যে সারি অনুসারে সাজানো উচিত আইডি মধ্যে উচ্চক্রমে আদেশ, সে জন্যই এই প্রশ্নের সাথে কাজ করছে না হয়

SELECT 
    *
FROM
    `table`
ORDER BY id DESC
LIMIT 50;

এছাড়াও এটি লক্ষণীয় যে সারিগুলি হেরফের করা যায় (মুছে ফেলা) এবং এজন্য নিম্নলিখিত কোয়েরিটিও কাজ করছে না

SELECT 
    *
FROM
    `table`
WHERE
    id > ((SELECT 
            MAX(id)
        FROM
            chat) - 50)
ORDER BY id ASC;

প্রশ্ন : মাইএসকিউএল ডেটাবেস থেকে শেষ এন সারিগুলি কীভাবে পুনরুদ্ধার করা সম্ভব এবং এএসসি অর্ডারে থাকতে পারে?

উত্তর:


236

আপনি এটি একটি উপ-কোয়েরিতে করতে পারেন:

SELECT * FROM (
    SELECT * FROM table ORDER BY id DESC LIMIT 50
) sub
ORDER BY id ASC

এটি শেষ 50 টি সারিটি নির্বাচন করবে tableএবং তারপরে সেগুলি আরোহণের ক্রমে অর্ডার করবে।


5
^ এফওয়াইআই, আমি জানি যে এই নিবন্ধটি মাইএসকিউএল সম্পর্কিত, তবে পরামর্শ দিতে চেয়েছিলেন যে উপরে @ ডিয়েগোডিডি-র মন্তব্যের প্রতিক্রিয়া হিসাবে, বাহ্যিক নির্বাচন এবং উপনাম বাদ দিয়ে পোস্টগ্র্যাসে (9.3.5) কাজ করে না বলে মনে হচ্ছে। আমি একটি 'ত্রুটি পেয়েছি: একাধিক অর্ডার বাই ক্লজ অনুমোদিত নয়'। গৃহীত উত্তরটি
পোস্টগ্র্রেসে

এর জন্য ধন্যবাদ! এই ক্যোয়ারী আমাকে আমার সমস্যা সমাধান করতে সহায়তা করেছে। আমি কয়েক ঘন্টা ধরে এটি সন্ধান করছি
আরশাদ

1
আমি এই জিজ্ঞাসাটি JOINS এর সাথে কীভাবে প্রয়োগ করতে পারি?
জিওয়ান

@ জিওয়ান অভ্যন্তরীণ সাব ক্যোয়ারিতে যোগ দেয়
শেখ হামজা

9
SELECT * FROM table ORDER BY id DESC,datechat desc LIMIT 50

আপনার যদি এমন একটি তারিখের ক্ষেত্র থাকে যা সেই তারিখটি (এবং সময়) সংরক্ষণ করে যাতে চ্যাটটি প্রেরণ করা হয় বা যে কোনও ক্ষেত্র যা ক্রমবর্ধমান (ডিইএসসি দ্বারা অর্ডার) বা সারি অনুসারে desinscrementally (ASC দ্বারা আদেশ) দিয়ে পূর্ণ হয় তবে এটি দ্বিতীয় কলাম হিসাবে রাখবে যা তথ্য অর্ডার করা উচিত।

এটাই আমার পক্ষে কাজ করেছে !!!! আশা করি এটি সাহায্য করবে !!!!


7
SELECT * FROM table ORDER BY id DESC LIMIT 50

সংস্থানগুলি সংরক্ষণ করুন একটি জিজ্ঞাসা করুন, নেস্টেড কোয়েরি করার দরকার নেই


1
আপনার ক্যোয়ারী ফলাফলগুলি বিপরীতে (উতরাই আইডি) ফিরিয়ে দেবে। @ নিউফর্নিয়ারির ক্যোয়ারিতে সর্বশেষ সন্নিবেশ করা সারিগুলি ( LIMITঅবতরণ আইডিতে আইং ) পাওয়া যাবে এবং চূড়ান্ত ফলাফলটিতে আরোহী আইডি থাকবে।
রবিন ক্যান্টারস

1
আপনার সমাধানটি সঠিক ক্রমে ফলাফলগুলি পাবে না পরিবর্তে এটি তাদের বিপরীত হয়ে উঠবে এইভাবে তাদের আবার সঠিক ক্রমে পাওয়ার জন্য অন্য আদেশের প্রয়োজন
Cobra47

1
তবে আপনি কেবল একটি পিএইচপি অ্যারে_রেভার () বা আপনার পছন্দসই স্ক্রিপ্টিং ভাষার সমতুল্য যা কিছু করুন। ডাটাবেসটির সেই কাজটি করার দরকার নেই।
জো

6
@ জো প্রশ্নটিতে এমন কিছুই নেই যা ইঙ্গিত করে যে কোনও স্ক্রিপ্টিং ভাষা ব্যবহৃত হচ্ছে, সুতরাং এটি নিরাপদ অনুমান নয়।
নিক কুনস

কেবলমাত্র ডাটাবেস ক্যোয়ারী ব্যবহার করে প্রত্যাশিত উত্তরটি ইতিমধ্যে বাছাই করা উচিত।
d4ryl3

-2
select * from Table ORDER BY id LIMIT 30

দ্রষ্টব্য: * idঅনন্য হওয়া উচিত। * আপনি 30ক্যোয়ারিতে প্রতিস্থাপন করে ফিরে আসা সারির সংখ্যা নিয়ন্ত্রণ করতে পারেন


1
আপনি কি দয়া করে আপনার সমাধানটি ব্যাখ্যা করতে পারেন? বন্ধনীগুলির ব্যাখ্যা কোড হিসাবে উপস্থিত বলে মনে হচ্ছে, আপনার কোডের উপরে / নীচে একটি সম্পূর্ণ বাক্য রাখুন। ধন্যবাদ
ডিহার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.