Cap*_*tic 3 sql database oracle database-design
我试图从表中删除行("lovalarm"),其中字段("pointid")就像许多字符串中的任何一个.
目前我手动输入它们但是我需要能够拥有超过100,000个选项的列表.
我的想法是有一个表("lovdata")包含所有可能的字符串并运行查询来删除字段"喜欢"其他表中任何字符串的行.
任何人都可以指出我是否/如何以这种方式使用?
非常感谢,Cap
确定你可以加入LIKE运算符:
DELETE FROM lovalarm a
WHERE EXISTS (SELECT NULL
FROM lovdata d
WHERE a.pointid LIKE d.pointid)
Run Code Online (Sandbox Code Playgroud)
该lovdata.pointid列可能包含通配符,请考虑:
SQL> CREATE TABLE lovalarm AS
2 SELECT 'AA' pointid FROM dual
3 UNION ALL SELECT 'AB' FROM dual
4 UNION ALL SELECT 'AC' FROM dual
5 UNION ALL SELECT 'BA' FROM dual
6 UNION ALL SELECT 'BB' FROM dual
7 UNION ALL SELECT 'BC' FROM dual;
Table created
SQL> --# suppose that you want to remove all entries that start
2 --# with A or end with C
3 CREATE TABLE lovdata AS
4 SELECT 'A%' pointid FROM dual
5 UNION ALL SELECT '%C' FROM dual;
Table created
SQL> DELETE FROM lovalarm a
2 WHERE EXISTS (SELECT NULL
3 FROM lovdata d
4 WHERE a.pointid LIKE d.pointid);
4 rows deleted
SQL> select * from lovalarm;
POINTID
-------
BA
BB
Run Code Online (Sandbox Code Playgroud)