我的CustomTags
表可能有一系列"临时"记录Tag_ID
为0,Tag_Number
的值为五位数。
我想定期清理我的Sqlite表以删除这些临时值。
例如,我可能有:
Tag_ID Tag_Number
0 12345
0 67890
0 45678
1 12345
2 67890
在这种情况下,我想删除前两个记录,因为它们与实际的Tag_ID
1和2重复。但我还是不想删除第三条记录,因为它没有'已经重复了。
我尝试了许多不同类型的子查询,但我无法让它工作。这是我尝试的最后一件事,但我的数据库客户端抱怨未知的语法错误。 (我尝试使用和不使用AS
作为别名)
DELETE FROM CustomTags t1
WHERE t1.Tag_ID = 0
AND (SELECT COUNT(*) FROM CustomTags t2 WHERE t1.Tag_Number = t2.Tag_Number) > 1
有人可以提供一些见解吗?谢谢
答案 0 :(得分:1)
有很多选项,但最简单的可能是使用cell.imageView?.contentMode = UIViewContentMode.Center
cell.imageView?.contentMode = UIViewContentMode.ScaleAspectFit
switch (post.priorityLevel){
case "High Priority Posting":
cell.imageView?.image = UIImage(named: "High Priority Posting")
case "Priority Posting":
cell.imageView?.image = UIImage(named: "Priority Posting")
case "General Posting":
cell.imageView?.image = UIImage(named: "General Posting")
default:
print("Priority Level can't be loaded to table")
}
;
EXISTS
...或DELETE FROM CustomTags
WHERE Tag_ID = 0
AND EXISTS(
SELECT 1 FROM CustomTags c
WHERE c.Tag_ID <> 0 AND c.Tag_Number = CustomTags.Tag_Number
)
...
NOT IN
答案 1 :(得分:0)
使用您的数据集:
sqlite> select * from test;
tag_id tag_number
---------- ----------
1 12345
1 67890
0 12345
0 67890
0 45678
你可以运行:
delete from test
where rowid not in (
select a.rowid
from test a
inner join (select tag_number, max(tag_id) as mt from test group by tag_number) b
on a.tag_number = b.tag_number
and a.tag_id = b.mt
);
结果:
sqlite> select * from test;
tag_id tag_number
---------- ----------
1 12345
1 67890
请用更多的测试用例进行测试,而不是完全确定这是你想要的。我建议您在大型数据集上运行之前创建数据库的副本。