我的目標是創建一個臨時表,其中TBL_1.RANDOM1不存在於TBL_2.RANDOM2中。它工作,如果RANDOM2沒有數據,但一旦插入一個值,我的代碼填充NULLS。如何生成其他表中不存在的隨機數?
我搜索了一段時間,發現一段代碼,並認爲它的工作,直到一些數據被添加到列,我不想複製。
SELECT DISTINCT COL1, MAX(COL2) AS COL2, MAX(COL3) AS COL3, (
SELECT DISTINCT 'AUTOCT'
+ CAST(ABS(CHECKSUM(NEWID()) % 899999) + 100000 AS VARCHAR(15)) AS RANDOM1
WHERE RANDOM1 NOT IN (
SELECT DISTINCT RANDOM2
FROM TBL_2
WHERE RANDOM2 LIKE 'AUTOCT%'
)
) AS RANDOM1, COUNT(COL5) AS COL5, SUM(COL6) AS COL6
INTO ##TEMP1
FROM TBL_1
你的意思是['RAND()'](https://msdn.microsoft.com/en-us/library/ms177610(v = sql.120).aspx)? – Marusyk
我看不到上面粘貼的代碼會如何運行。 「COL1」在選擇列表中,但不在「GROUP BY」中。子查詢的where子句中的RANDOM1指的是'TBL_1.RANDOM1',這是沒有意義的,因爲你想檢查新值是否已經存在或不存在,是正確的?再次,'TBL_1.RANDOM1'不在'GROUP BY'中。這是否適用於Microsoft SQL Server?順便說一句,全球臨時表幾乎總是錯誤的選擇。 –
[可能重複](http://stackoverflow.com/questions/28500029/generate-a-random-number-which-is-not-there-in-a-table-in-sql-server) – Wanderer