এসকিউএল-তে কোনও টেবিলের শেষ রেকর্ডটি কীভাবে নির্বাচন করবেন?


133

এটি একটি সারণী থেকে সমস্ত রেকর্ড নির্বাচন করার জন্য একটি নমুনা কোড। কেউ আমাকে কীভাবে সেই টেবিলের শেষ রেকর্ডটি নির্বাচন করতে পারেন?

select * from table

যখন আমি ব্যবহার করি: SELECT * FROM TABLE ORDER BY ID DESC LIMIT আমি এই ত্রুটিটি পেয়েছি: লাইন 1: 'LIMIT' এর কাছে ভুল সিনট্যাক্স। এই কোডটি আমি ব্যবহার করি:

private void LastRecord()
{
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["HELPDESK_OUTLOOKConnectionString3"].ToString());

    conn.Open();
    SqlDataReader myReader = null;
    SqlCommand myCommand = new SqlCommand("SELECT * FROM HD_AANVRAGEN ORDER BY " +
                "aanvraag_id DESC LIMIT 1", conn);
    myReader = myCommand.ExecuteReader();
    while (myReader.Read())
    {
        TextBox1.Text = (myReader["aanvraag_id"].ToString());
        TextBox1.Text += (myReader["wijziging_nummer"].ToString());
        TextBox1.Text += (myReader["melding_id"].ToString());
        TextBox1.Text += (myReader["aanvraag_titel"].ToString());
        TextBox1.Text += (myReader["aanvraag_omschrijving"].ToString());
        TextBox1.Text += (myReader["doorlooptijd_id"].ToString());
        TextBox1.Text += (myReader["rapporteren"].ToString());
        TextBox1.Text += (myReader["werknemer_id"].ToString());
        TextBox1.Text += (myReader["outlook_id"].ToString());
    }
}

ঠিক আছে, আপনাকে কিছু অর্ডার করতে হবে। আপনার কি প্রাথমিক কী আছে? সম্ভবত একটি আইডি?
অ্যালেক্সন

"শেষ রেকর্ড" বলতে কী বোঝ? প্রাথমিক কী কলামের সর্বোচ্চ মান সহ?
মার্সিন রোলব্লুস্কি

উত্তর:


337

কোনও তথ্য না থাকলে, কোন ডাটাবেস ইত্যাদি আমরা সবচেয়ে ভাল করতে পারি তা হ'ল কিছু

SQL সার্ভার

SELECT TOP 1 * FROM Table ORDER BY ID DESC

মাইএসকিউএল

SELECT * FROM Table ORDER BY ID DESC LIMIT 1

1
শীর্ষ 1 প্রথম নিতে হবে, না?
টাসিস্টো

30
হ্যাঁ, কিন্তু যে কেন আপনি করে অর্ডার DESC
Adriaan Stander

3
তবে আপনি যদি মিলিয়ন রেকর্ডের জন্য ডিইএসসির আদেশ ব্যবহার করেন তবে এটি আপনার অ্যাড্রিয়ায়ানস স্ট্যান্ডার
চার্লস হার্নান্দেজ

1
মাইএসকিএল ওয়ান এসকিএল সার্ভারের সাথেও কাজ করে। এটি একটি জেনেরিক স্কেল কমান্ড।
আজহার

1
@ itz-আজহার: এই ক্যোয়ারী মাইএসকিউএল ফর্ম না একটি জেনেরিক SQL কমান্ড; LIMITশব্দ এসকিউএল একটি এক্সটেনশন যে শুধুমাত্র কিছু RDBMSes বাস্তবায়ন হয়; উল্লেখযোগ্যভাবে, ওরাকলের কোনও LIMITকীওয়ার্ড নেই
ল্যান্ড্রু 27

23

ধরে নিচ্ছি আপনার একটি আইডি কলাম রয়েছে:

SELECT TOP 1 *
  FROM table
 ORDER
    BY Id DESC;

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

SELECT *
  FROM table
 ORDER
    BY Id DESC
 LIMIT 1

তবে, আমি এ সম্পর্কে 100% নিশ্চিত নই।

সম্পাদনা

অন্যান্য উত্তরগুলি খুঁজছেন, আমি এখন 100% আত্মবিশ্বাসী যে আমি মাইএসকিউএল বিবৃতি দিয়ে সঠিক: ও)

সম্পাদনা

সবেমাত্র আপনার সর্বশেষ মন্তব্য দেখেছি। আপনি করতে পারেন:

SELECT MAX(Id)
  FROM table

এটি আপনাকে সর্বোচ্চ আইডি নম্বর দেবে।


2
নির্বাচন করুন সর্বোচ্চ (আইডি) থেকে ডেটা নিখুঁত কাজ করে!
রিকার্ডো ফ্রেচার

15

গত পেতে সারি একটি এর এসকিউএল ডাটাবেজ এই এসকিউএল স্ট্রিং ব্যবহার করুন:

SELECT * FROM TableName WHERE id=(SELECT max(id) FROM TableName);

আউটপুট:

আপনার ডিবি শেষ লাইন!


3
ওরাকল
নিয়েও

এই এক সেরা। বাছাই করা নেই, কোনও "সেরা 1" নেই, কেবল সমর্থিত এবং পারফরম্যান্ট অনুসন্ধানগুলি। পারফেক্ট।
ম্যাট এফ

7
SELECT * FROM TABLE ORDER BY ID DESC LIMIT 1

হ্যাঁ এটি এসকিউএল, এসকিউএল সার্ভার:

SELECT TOP 1 * FROM Table ORDER BY ID DESC

এটি একটি ত্রুটি দেয়! আমি ভেবেছিলাম এটি এসকিউএল তবে এটি মাইএসকিউএল
10:39 এ ট্যাসিস্টো

1
এসকিউএল সার্ভারে সম্পাদিত, তবে আপনি প্রশ্নটিতে আপনার ডিবিএমএস নির্দিষ্ট করেন নি।
সাইমন

3
SELECT * FROM table ORDER BY Id DESC LIMIT 1

2

আপনার অর্ডারটি বিপরীত করার পরে সর্বশেষ প্রথমটি।


0

ওরাকলে, আপনি এটি করতে পারেন:

SELECT *
FROM (SELECT EMP.*,ROWNUM FROM EMP ORDER BY ROWNUM DESC)
WHERE ROWNUM=1;

এটি সম্ভাব্য উপায়গুলির মধ্যে একটি।


0
select ADU.itemid, ADU.startdate, internalcostprice 
from ADUITEMINTERNALCOSTPRICE ADU

right join

   (select max(STARTDATE) as Max_date, itemid 
   from ADUITEMINTERNALCOSTPRICE
   group by itemid) as A

on A.ITEMID = ADU.ITEMID
and startdate= Max_date

1
স্ট্যাকওভারফ্লোতে স্বাগতম। আপনি যে জবাব দিয়েছেন তা ছাড়াও দয়া করে কেন এবং কীভাবে এটি সমস্যার সমাধান করে তার সংক্ষিপ্ত বিবরণ দেওয়ার জন্য দয়া করে বিবেচনা করুন।
jtate

0

আপনার টেবিল ডিজাইনে একটি স্বয়ংক্রিয় সারি সনাক্তকারী যেমন সর্বদা একটি ভাল অনুশীলন

 [RowID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL

, তারপরে আপনি নিজের শেষ সারিটি সনাক্ত করতে পারবেন

 select * from yourTable where rowID =  @@IDENTITY 


0

আপনার যদি স্ব-বর্ধনকারী ক্ষেত্র থাকে (বলুন ID) তবে আপনি এর মতো কিছু করতে পারেন: SELECT * FROM foo WHERE ID = (SELECT max(ID) FROM foo)


-1
$sql="SELECT tot_visit FROM visitors WHERE date = DATE(NOW()) - 1 into @s                
$conn->query($sql);
$sql = "INSERT INTO visitors (nbvisit_day,date,tot_visit) VALUES (1,CURRENT_DATE,@s+1)";
$conn->query($sql);

প্রশ্নটি মনোযোগ দিয়ে পড়েছেন? কীভাবে INSERTএকটি "নতুন টেবিলের শেষ রেকর্ডটি নির্বাচন করবেন" এর সাথে একটি নতুন মান যুক্ত করা যায়?
landru27

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

যখন ওপি কেবলমাত্র এসকিউএল ভাষা সম্পর্কে জিজ্ঞাসা করবে তখন পিএইচপি নির্দিষ্ট কোড লিখবেন না।
স্টিভ মোরটজ


-1

আমি রিকার্ডোকে উন্নত করেছিলাম। বাছাই করার চেয়ে ম্যাক্স আসলে বেশ দক্ষ than পার্থক্য দেখুন। এটি দুর্দান্ত।

আমাকে শেষ সারি / আপডেট রেকর্ড (টাইমস্ট্যাম্প) পেতে হয়েছিল

`sqlite> select timeStamp from mypadatav2 order by timeStamp desc limit 1;
 2020-03-11 23:55:00
 Run Time: real 1.806 user 1.689242 sys 0.117062`

`sqlite> select max(timeStamp) from mypadatav2;
 2020-03-11 23:55:00
 Run Time: real 0.553 user 0.412618 sys 0.134340`
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.