Ho dovuto rivedere un po 'di codice e ho trovato qualcosa che qualcuno ha fatto, e non riesco a pensare a una ragione a mio modo migliore. E probabilmente non lo è, quindi, che è migliore/più sicuro/più efficiente?MAX vs Top 1 - che è meglio?
SELECT MAX(a_date) FROM a_table WHERE a_primary_key = 5 GROUP BY event_id
O
SELECT TOP 1 a_date FROM a_table WHERE a_primary_key = 5 ORDER BY a_date
sarei andato con il 2 ° opzione, ma non sono sicuro perché, e se è vero.
SQL Server TOP 1 si comporta diversamente da Oracle utilizzando rowNum = 1. Oracle in realtà acquisisce il primo che trova PRIMA dell'ordinamento, quindi questo metodo è valido solo per SQL Server. Un altro vantaggio di questo TOP 1 rispetto a Max() è che puoi prendere tutte le colonne che vuoi, purché includi l'ordine applicabile. Ho provato a utilizzare Max() e ho trovato persino con GROUP BY che non sembrava produrre solo 1 record. Forse qualcuno come mojo più forte può dire come ottenere solo una riga se vuoi ottenere la parte superiore da più colonne senza una sotto-query? – gordon