2012-04-12 13 views
0

Ich habe eine Tabelle wie folgt aus:durch Feld bestellt aus Tabelle TOP 1 Ergebnis SELECT

id    package    start_date   option 
1    342323    2012-02-02   1 
2    3423333    2012-02-06   1 
3    552234    2012-02-14   2 

ich nur die (top 1) Zeile auswählen möchten, die die minimum start_date hat.

Ich versuchte where start_date = MIN(start_date), aber es funktioniert nicht.

I SQL Server 2008.

+1

MSSQL 2008 Server – pufos

Antwort

4
select top 1 * from table 
order by start_date 
+0

danke ... ich habe das nicht realisiert ... also .. um es in einer Beilage zu benutzen .. muss ich 'Cross anwenden' richtig machen? – pufos

+0

@pufos Ich bin mir nicht sicher, was ich antworten soll ... du kannst einfach 'select * von tbl1 join (this_query) s' ... Das ist eine ziemlich allgemeine Frage :) –

+0

wenn ich' join verwende (wähle oben 1 * ...) 'es hat gewonnen; t nichts zurückzugeben: wegen' top 1' ... – pufos

1

für SQL Server

select top 1 * from tbl_name order by start_date 

Für Mysql

select * from tbl_name order by start_date asc limit 1 
+1

Eigentlich ist dies in MySQL und PostgreSQL und nicht in SQL Server gültig :( –

+1

das war für den ursprünglichen Beitrag – sujal

1

try bin mit:

where start_date = (select min(start_date) from yourtable) 
1
SELECT * FROM myTable 
ORDER BY start_date ASC 
LIMIT 1 
+0

Eigentlich ist dies in MySQL und PostgreSQL und nicht in SQL Server gültig :( –

+1

@MostyM Ostacho Sie sind wahr, aber Benutzer aktualisiert die Frage nach unseren Antworten :) – DonCallisto

1
SELECT * from Yourtable 
WHERE start_date = (SELECT (Min(yt1.Start_Date) FROM YourTable as yt1) 
+0

Warum tun Sie zwei wählen? Mit 'TOP' und' LIMIT' können Sie auf effiziente Weise das gleiche Ergebnis erzielen ... – DonCallisto

+0

voll einverstanden, aber ich vermute, dass dies ein kleiner Teil von big select sein kann, in diesem Fall gibt es die Möglichkeit, dass TOP und LIMIT können unbrauchbar sein –

1

Für MSSQL

select top 1 * from your_table order by start_date asc 
0

Diese SQL Server-spezifische Abfrage sollten Sie die Daten erhalten Sie wollen. Versuchen Sie dies mit:

select top 1 * from tbl_name order by start_date asc 
0

Sie auch nutzen könnten:

;With top_record as 
(
SELECt * 
    ,row_number() OVER (order by start_date ASC) as row 
    FROM yourtable 
) 
SELECT * from top_record WHERE row = 1 

Dies würde Ihnen dann die Flexibilität, um zu bestimmen, was mit Verbindungen zu tun, indem DENSE_RANK/RANK statt ROW_NUMBER()

Verwandte Themen