我有两个SQL表如下:
mydate = If(dtReader.IsDBNull(dtReader.GetOrdinal("mydate")), _
CType(Nothing,DateTime?), _
dtReader.GetDateTime(dtReader.GetOrdinal("mydate")))
我需要删除其名称未显示在任何帖子的“内容”列中的所有文件...注意,该内容具有HTML代码,其中包含文件名称。
例如,如果在任何帖子的内容中找不到带create table dbo.Posts (
Id int identity not null,
Content nvarchar (max) not null
-- other columns
)
create table dbo.Files (
Id int identity not null,
Name nvarchar (200) not null
-- other columns
)
的文件,则应将其删除。
更新
我尝试了一个Select来测试它,但不知怎的,这给了我所有文件,所以我不确定我错过了什么:
Name=hello-john
我错过了什么吗?
答案 0 :(得分:1)
查找所有Files
- 未引用的行:
SELECT *
FROM Files f
WHERE NOT EXISTS (
SELECT 1 FROM Posts p WHERE p.content like '%' + f.name + '%');
删除所有这些:
DELETE
FROM Files
WHERE NOT EXISTS (
SELECT 1 FROM Posts p WHERE p.content like '%' + Files.name + '%');
或
DELETE FROM Files where id in
(SELECT f.id
FROM Files f
WHERE NOT EXISTS (
SELECT 1 FROM Posts p WHERE p.content like '%' + f.name + '%'));
可能会很慢,具体取决于行数。