-1

我有字符串数组。例如数组 FileNamesArray[] 中的 10 个字符串

我有一个包含 7 行的数据库表。MyFiles 表说明:

ID int
FileName varchar

我想知道我的表中不存在数组中的哪些字符串。像这样:

    "SELECT * FROM (" + FileNamesArray + ") LEFTJOIN MyFiles ON FileNamesArray = MyFiles.FileName WHERE MyFiles.FileName IS NULL

如何用 SQL 表达?我可以避免使用临时表吗?

PS示例

FileNamesArray = ['file1', 'file2', 'file3', ..., 'file10']
MyFiles = ['file0', 'file1', ..., 'file6']
I need to get answer = ['file7', 'file8', 'file9', 'file10']
4

1 回答 1

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

我看不出您如何摆脱使用临时表,希望这会有所帮助

于 2012-11-09T17:48:05.690 回答