Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Generieren Sie eine Zufallszahl, die in einer Tabelle in SQL Server nicht vorhanden ist

Noch eine Option, ich mochte schon immer NEWID() für zufällige Reihenfolge, und Cross Joins erstellen sehr effizient viele Zeilen:

;with cte AS (SELECT 1 n UNION ALL SELECT 1)
     ,cte2 AS (SELECT TOP 100 ROW_NUMBER() OVER(ORDER BY a.n) n
               FROM cte a,cte b,cte c,cte d, cte e, cte f, cte g)
SELECT TOP 1 n
FROM cte2 a
WHERE NOT EXISTS (SELECT 1
                  FROM randomNums b
                  WHERE a.n = b.num)
ORDER BY NEWID()

Demo:SQL-Geige