none
[ T-SQL ] Conoscere il valore interno di una Id RRS feed

  • Domanda

  • Buongiorno a tutti, avrei la necessità di conoscere il numero presente nella colonna Id, per capirci...se ho 10 record non è detto che il 3° record abbia come valore Id=3 ma potrebbe avere un valore diverso, c'è un modo per conoscerlo tramite query?

    Sono riuscito ad avere il valore dell'ultimo record, in questo modo:

    SELECT (Id) AS num
    FROM Table_AnnoMese

    Guido

    sabato 16 maggio 2020 11:24

Risposte

  • Ciao,

    provo a farti un esempio e a darti qualche risposta da quello che ho capito. Diciamo che la tua tabella contiene questi valori:

    Come noterai, ho inserito dei valori che potrebbero sembrare anomali ma mi servono per chiarire un paio di concetti.

    1. In una tabella, generalmente, i record non hanno nessun ordinamento fisico, quindi per estrarre il valore del campo ID di un record qualsiasi dobbiamo specificare qual'è la condizione con la quale vogliamo "filtrare" il record. Se ad esempio voglio risalire a quello relativo al mese di marzo dell'anno 2020, posso scrivere un query di questo tipo:

    SELECT [ID]
      FROM [dbo].[AnnoMese]
      WHERE [Anno] = 2020 AND [Mese] = 3;


    2. Rifacendomi poi al tuo esempio, se per ID dell'ultimo record, intendi il record che ha l'id più grande puoi scrivere questo:

    SELECT MAX([ID])
      FROM [dbo].[AnnoMese];

    )

    Tieni poi presente che non è detto che gli ID vengano inseriti in modo progressivo a meno che non venga specificato che il campo sia un IDENTITY.

    3. Se volessi poi estrarre il valore del campo ID relativo all'ultimo mese inserito dell'anno 2020, puoi scrivere questo:

    SELECT TOP 1 [ID]
      FROM [dbo].[AnnoMese]
      WHERE [Anno] = 2020 
      ORDER BY [Mese] DESC

    Fammi sapere se ti servono altri esempi ma servirebbe qualche informazione in più in modo da centrare meglio la risposta!



    HTH,

    Cristiano Gasparotto, MCSE Data Management and Analytics

    You can find me working hard every day at Datamaze!

    Please Mark This As Answer if it solved your issue or Vote This As Helpful if it helps to solve your issue. Thank you!


    • Contrassegnato come risposta Guido.G sabato 16 maggio 2020 14:56
    • Modificato Cristiano Gasparotto domenica 17 maggio 2020 07:20 Aggiunta immagine mancante
    sabato 16 maggio 2020 14:01

Tutte le risposte

  • Ciao,

    provo a farti un esempio e a darti qualche risposta da quello che ho capito. Diciamo che la tua tabella contiene questi valori:

    Come noterai, ho inserito dei valori che potrebbero sembrare anomali ma mi servono per chiarire un paio di concetti.

    1. In una tabella, generalmente, i record non hanno nessun ordinamento fisico, quindi per estrarre il valore del campo ID di un record qualsiasi dobbiamo specificare qual'è la condizione con la quale vogliamo "filtrare" il record. Se ad esempio voglio risalire a quello relativo al mese di marzo dell'anno 2020, posso scrivere un query di questo tipo:

    SELECT [ID]
      FROM [dbo].[AnnoMese]
      WHERE [Anno] = 2020 AND [Mese] = 3;


    2. Rifacendomi poi al tuo esempio, se per ID dell'ultimo record, intendi il record che ha l'id più grande puoi scrivere questo:

    SELECT MAX([ID])
      FROM [dbo].[AnnoMese];

    )

    Tieni poi presente che non è detto che gli ID vengano inseriti in modo progressivo a meno che non venga specificato che il campo sia un IDENTITY.

    3. Se volessi poi estrarre il valore del campo ID relativo all'ultimo mese inserito dell'anno 2020, puoi scrivere questo:

    SELECT TOP 1 [ID]
      FROM [dbo].[AnnoMese]
      WHERE [Anno] = 2020 
      ORDER BY [Mese] DESC

    Fammi sapere se ti servono altri esempi ma servirebbe qualche informazione in più in modo da centrare meglio la risposta!



    HTH,

    Cristiano Gasparotto, MCSE Data Management and Analytics

    You can find me working hard every day at Datamaze!

    Please Mark This As Answer if it solved your issue or Vote This As Helpful if it helps to solve your issue. Thank you!


    • Contrassegnato come risposta Guido.G sabato 16 maggio 2020 14:56
    • Modificato Cristiano Gasparotto domenica 17 maggio 2020 07:20 Aggiunta immagine mancante
    sabato 16 maggio 2020 14:01
  • Grazie Cristiano...capito.
    sabato 16 maggio 2020 14:56