Hoe u het laatste record van een tabel in SQL selecteert?

Dit is een voorbeeldcode om alle records van een tabel te selecteren. Kan iemand me laten zien hoe ik het laatste record van die tabel kan selecteren?

select * from table

Wanneer ik gebruik: SELECT * FROM TABLE ORDER BY ID DESC LIMIT
Ik krijg deze foutmelding: Lijn 1: onjuiste syntaxis in de buurt van ‘limiet’.
Dit is de code die ik gebruik:

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());
    }
}

Antwoord 1, Autoriteit 100%

Zonder meer informatie, welke database enz. Het beste wat we kunnen doen is iets als

SQL Server

SELECT TOP 1 * FROM Table ORDER BY ID DESC

mysql

SELECT * FROM Table ORDER BY ID DESC LIMIT 1

Antwoord 2, Autoriteit 10%

Om de laatste Row van een SQL-database te krijgen, gebruik deze SQL-string:

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

Uitgang:

Laatste regel van uw DB!


Antwoord 3, Autoriteit 6%

Aangenomen dat u een ID-kolom hebt:

SELECT TOP 1 *
  FROM table
 ORDER
    BY Id DESC;

Ook werkt dit op SQL Server. Ik denk dat MySQL je misschien moet gebruiken:

SELECT *
  FROM table
 ORDER
    BY Id DESC
 LIMIT 1

Maar ik ben hier niet 100% zeker van.

bewerken

Kijkend naar de andere antwoorden, ik ben nu 100% vertrouwen dat ik corrigeer met de MySQL-instructie: O)

bewerken

Ik heb net je nieuwste opmerking gezien. Je zou kunnen doen:

SELECT MAX(Id)
  FROM table

Hierdoor krijgt u het hoogste ID-nummer.


Antwoord 4, Autoriteit 2%

SELECT * FROM Table ORDER BY ID DESC LIMIT 1

Ja, dit is MySQL, SQL Server:

SELECT TOP 1 * FROM Table ORDER BY ID DESC

Antwoord 5

SELECT * FROM Table ORDER BY ID DESC LIMIT 1

Antwoord 6

Het is altijd een goede gewoonte om in uw tabelontwerp een automatische rij-ID te hebben, zoals

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

, dan kunt u uw laatste rij herkennen aan

select * from yourTable where rowID =  @@IDENTITY 

Antwoord 7

MS SQL Server ondersteunt al vele jaren ANSI SQL FETCH FIRST:

SELECT * FROM TABLE
ORDER BY ID DESC 
OFFSET 0 ROWS FETCH FIRST 1 ROW ONLY

(Werkt met de meeste moderne databases.)


Antwoord 8

Als je een zelfverhogend veld hebt (zeg ID), dan kun je zoiets doen als:
SELECT * FROM foo WHERE ID = (SELECT max(ID) FROM foo)


Antwoord 9

De laatste is slechts de eerste wanneer u uw bestelling ongedaan maakt.


Antwoord 10

Bijna alle antwoorden gaan ervan uit dat de ID-kolom is geordend (en misschien automatisch wordt verhoogd). Er zijn echter situaties waarin de ID-kolom nietis geordend, waardoor het ORDER BY-statement geen zin heeft.

De laatst ingevoerde ID is misschien niet altijd de hoogste ID, het is alleen de laatste (unieke) invoer.

Een mogelijke oplossing voor een dergelijke situatie is om direct een rij-ID te maken:

SET @r = 0;
SELECT * FROM (SELECT *, (@r := @r + 1) AS r_id FROM my_table) AS tmp
    ORDER BY r_id DESC LIMIT 1;

Antwoord 11

In Oracle kunt u het volgende doen:

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

Dit is een van de mogelijke manieren.


Antwoord 12

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

Antwoord 13

Ik denk dat dit het zou moeten doen.

declare @x int;
select @x = max(id) from table_name;
select * from where id = @x;

Antwoord 14

$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);

Antwoord 15

Je kunt ook zoiets als dit doen:

SELECT LAST (column_name) AS LAST_CUSTOMER FROM table_name;


Antwoord 16

Ik heb voor Ricardo gestemd. Eigenlijk is max veel efficiënter dan sorteren.
Zie de verschillen. het is geweldig.

Ik moest de laatste rij/updaterecord (timeStamp) ophalen

`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`

Other episodes