2010-03-06 16 views
19

se ho una tabella con le colonne id, nome, punteggio, dataquery SQL per ottenere prima data

e volevo eseguire una query SQL per vedere la scheda dove id = 2 con la prima data nei dati impostato.

è possibile farlo all'interno della query o è necessario eseguire il ciclo dopo il fatto?


EDIT: Per essere espliciti, voglio ottenere tutti i campi di tale record. .

risposta

28

Se si desidera solo la data:

SELECT MIN(date) as EarliestDate 
FROM YourTable 
WHERE id = 2 

Se si desidera che tutte le informazioni:

SELECT TOP 1 id, name, score, date 
FROM YourTable 
WHERE id = 2 
ORDER BY Date 

evitare loop quando si può. I loop spesso portano a cursori e i cursori non sono quasi mai necessari e molto spesso davvero inefficienti.

+0

E se voglio ottenere il nome anche per questo record – leora

5
SELECT TOP 1 ID, Name, Score, [Date] 
FROM myTable 
WHERE ID = 2 
Order BY [Date] 
2

Prova

select * from dataset 
where id = 2 
order by date limit 1 

un po 'che ho fatto sql, quindi questo potrebbe essere necessario qualche ritocco.

1

L'utilizzo di "limite" e "alto" non funziona con tutti i server SQL (ad esempio con Oracle). Si può provare una query più complessa in puro sql:

select mt1.id, mt1."name", mt1.score, mt1."date" from mytable mt1 
where mt1.id=2 
and mt1."date"= (select min(mt2."date") from mytable mt2 where mt2.id=2) 
+0

Questo può restituire più di una riga se ci sono righe con la stessa data minima. –

0

Durante l'utilizzo di TOP o una sotto-query sia il lavoro, avrei rotto il problema in fasi:

record di destinazione Ricerca

SELECT MIN(date) AS date, id 
FROM myTable 
WHERE id = 2 
GROUP BY id 

Iscriviti per ottenere altri campi

SELECT mt.id, mt.name, mt.score, mt.date 
FROM myTable mt 
INNER JOIN 
( 
    SELECT MIN(date) AS date, id 
    FROM myTable 
    WHERE id = 2 
    GROUP BY id 
) x ON x.date = mt.date AND x.id = mt.id 

Mentre questa soluzione, utilizzando tabelle derivate, è più lungo, è:

  • Più facile per testare
  • Auto documentare
  • allungabile

E 'più facile per testare come le parti del la query può essere eseguita autonomamente.

È autodocumentante in quanto la query riflette direttamente il requisito ovvero la tabella derivata elenca la riga dove id = 2 con la data meno recente.

È estendibile come se fosse necessaria un'altra condizione, questa può essere facilmente aggiunta alla tabella derivata.

Problemi correlati