您可以針對使用表值構造函數生成的內聯表進行連接,前提是它不會溢出多個標識,在這種情況下需要將它們轉儲到表中。
在一個VALUES
表達爲行的數量限制爲1000,根據the documentation:
,可以通過在VALUES列表直接插入行來構造的最大行數是1000
要加入與內嵌表,使用語法:
INNER JOIN (VALUES (1), (2), ...) AS inline (id)
下面是一個例子,W第i此表(實際表):
CREATE TABLE databasetable (ID INT NOT NULL)
INSERT INTO databasetable VALUES (1), (2), (3), (5), (6), (8), (9), (10)
您可以查詢這樣的遺漏值:
SELECT
excel.id
FROM
databasetable AS A
RIGHT JOIN (VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10)) AS excel (id)
ON A.id = excel.id
WHERE
A.id IS NULL
你會因此有機會從你的Excel電子表格的VALUES (1), (2), (3), ...)
。
要使用臨時表,如果有超過1000行:
DECLARE @EXCEL TABLE (ID INT)
INSERT INTO @EXCEL VALUES (1), (2), (3), ..... -- first 1000
INSERT INTO @EXCEL VALUES (1), (2), (3), ..... -- next 1000
INSERT INTO ... -- and so on
SELECT
@excel.id
FROM
databasetable AS A
RIGHT JOIN @excel
ON A.id = @excel.id
WHERE
A.id IS NULL
中查看此頁面通常情況下,您需要在一張表中檢查ID。然後,你可以左加入與記錄的實際表,看看有什麼缺失 –
謝謝@juergend - thi是一種情況下,我沒有在桌子上的身份證 - 你這次在Excel中呈現給我(有時通過電子郵件或其他方式,但基本上在數據庫結構之外,否則它會更簡單) – Paul
感謝@LukStorms獲取數據簡單地進入臨時表的任何提示,而無需過多編寫腳本?一旦它在那裏,我很滿意TSQL來做我需要的東西,但是我想知道是否有一種簡單的方法可以輕鬆地將列表放入db中,然後使用。 – Paul