我有一个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虽然我在这里学习,但你会有什么建议? –