domingo, marzo 26, 2023

Cómo retornar Random Rows utilizando NEWID y CHECKSUM

En un artículo anterior se había publicado Cómo generar correctamente un número random en SQL Server. En este ejemplo vamos a explicar cómo retornar datos random de un select, retornar filas aleatorias de datos.

Un ejemplo del funcionamiento de esto sería si necesitamos que siempre nos retorne un Row o Fila distinto en cada consulta, para un banner aleatorio, retornar artículos aleatorios, imágenes random.

Vamos a hacer el ejemplo usando la base de datos AdventureWorks2008. Se pueden ejecutar cualquiera de estos dos querys y retornarán datos distintos, datos random.

SELECT TOP 5 BusinessEntityID, FirstName, LastName
FROM Person.Person
ORDER BY CHECKSUM(NEWID())

SELECT TOP 5 BusinessEntityID, FirstName, LastName
FROM Person.Person
ORDER BY NEWID()

Como vemos en la primera se utiliza Checksum y en la segunda solamente NewID. Yo en lo personal prefiero la primera opción, en tablas muy grandes, prefiero ordenar los datos por un numero entero, pero en realidad es cuestión de gustos, las dos opciones funcionan.

El resultado de la consulta siempre va a ser distinta, cada vez que ejecutemos el query nos muestra rows distintos.

17375KrystalGao
15737BillyJiménez
6159LatashaSuarez
11459JennyZhu
20094DestinySimmons

Si lo volvemos a ejecutar muestra

12254ColleenChen
14253GarrettSanders
2484FrancisGutierrez
7495DominiqueMehta
12319ColleenKumar

Como podemos ver en cada ejecución ordena el resultado de manera distinta.

Roy Rojashttp://www.dotnetcr.com
Con más de 20 años de experiencia en programación, experto en lenguajes .NET, VB, C#, ASP.NET, Xamarin, XCode, DBA en SQL Server. Creador de dotnetcr.com, sitio web para programadores en español. royrojas.com | dotnetcr.com | GitHub

Redes Sociales

2,736FansMe gusta
326SeguidoresSeguir

Popular esta semana

Flutter – Error: ADB exited with exit code 1

En este artículo vamos a explorar algunas posibles causas y solución al error en Flutter Error: ADB exited with exit code 1....
SQL Server MERGE

MERGE en SQL Server para Insert, Delete y Update con dos tablas

Ejemplo práctico usando MERGE para sincronizar dos tablas, Insert, Update y Delete en un solo query. Válido para SQL SERVER 2008 o superior.
SQL Server

DELETE con subconsulta o INNER JOIN

En el siguiente ejemplo se explica la forma en que se pueden eliminar registros en nuestras tablas en SQL Server con instrucciones...

Últimos artículos

Como crear una API REST con ASP.NET Core 6.0

Crear una API REST con C# en ASP.NET es un proceso sencillo y rápido que permite exponer un conjunto de recursos a...
Machine Learning & Python

Introducción a Machine Learning en Python

Machine Learning es una rama de la inteligencia artificial que se enfoca en el desarrollo de sistemas que pueden aprender de...
SQL Server MERGE

MERGE en SQL Server, como utilizarlo de forma sencilla

El comando MERGE en SQL Server se utiliza para combinar datos de varias tablas en una sola tabla. Es útil para actualizar...

Índices repetidos en SQL Server ¿Cómo encontrarlos?

Los índices en la base de datos SQL Server es una herramienta que nos ayuda a mejorar la respuesta de nuestras consultas,...