我有一個VBA內建的用戶表單,我的同事可以輸入多個值來構建一個數組,並將它放入一個IN語句中,這很好。問題是我需要也能夠顯示錶中不存在的值。SQL - 從數組中選擇,而不是在相同的查詢
例表
id | value
1 | value1
2 | value2
4 | value4
那麼就可能會產生的查詢是
SELECT [id],[value] FROM [tablea] WHERE [id] IN (1,2,3,4)
預期或希望的結果會是如下
id | value
1 | value1
2 | value2
3 | null
4 | value4
我試着這樣做像這樣;
SELECT [id],[value] FROM [tablea] WHERE [id] IN (1,2,3,4) AND [id] NOT IN (1,2,3,4)
因爲兩個數組都是相同的,當然返回0。
我知道我可以用一個聯合來做到這一點,並且在第二個聯合中定義不在聲明中,但是我想在沒有聯合的情況下做到這一點..任何其他想法?
這是微軟SQL 2005
可惜我只能訪問選擇,因爲我執行或者通過VBA或查詢的Tableau。所以我不能創建一個派生表或者除了select語句之外還有其他的引用。
如果你正在構建一個數組,這樣做,我有一個很強烈的懷疑你的代碼是容易受到SQL注入。你是否建立了一個包含這個數組的字符串,然後在你的數據庫中執行它?這是sql注入的教科書定義。 –
@SeanLange我同意。但是,腳本只能在Active Directory中運行,並且只有選擇權限,並且可以選擇用戶。 –
@SeanLange雖然我在這裏學習,但你會有什麼建議? –