我有一系列字符串。例如,数组FileNamesArray []
中的10个字符串我有一个包含7行的数据库表。 MyFiles表格描述:
ID int
FileName varchar
我想知道我的表中不存在数组中的哪些字符串。 像这样的Smth:
"SELECT * FROM (" + FileNamesArray + ") LEFTJOIN MyFiles ON FileNamesArray = MyFiles.FileName WHERE MyFiles.FileName IS NULL
如何在SQL中表达它? 我可以避开临时表吗?
P.S。实施例
FileNamesArray = ['file1', 'file2', 'file3', ..., 'file10']
MyFiles = ['file0', 'file1', ..., 'file6']
I need to get answer = ['file7', 'file8', 'file9', 'file10']
答案 0 :(得分:1)
如果您修复了文件名,则可以声明一个内存表,例如
DECLARE @Temp TABLE (
Filename VARCHAR(255)
)
INSERT INTO @Temp VALUES ('file1')
INSERT INTO @Temp VALUES ('file2')
INSERT INTO @Temp VALUES ('file3')
INSERT INTO @Temp VALUES ('file4')
INSERT INTO @Temp VALUES ('file5')
INSERT INTO @Temp VALUES ('file6')
INSERT INTO @Temp VALUES ('file7')
INSERT INTO @Temp VALUES ('file8')
INSERT INTO @Temp VALUES ('file9')
INSERT INTO @Temp VALUES ('file10')
SELECT t.Filename
FROM @Temp t
LEFT JOIN MyFiles mf ON t.Filename = mf.Filename
WHERE mf.Filename IS NULL
我看不出你如何摆脱使用临时表,希望这有帮助