使用来自另一个表的数据使用sql'like'命令删除行

Cap*_*tic 3 sql database oracle database-design

我试图从表中删除行("lovalarm"),其中字段("pointid")就像许多字符串中的任何一个.

目前我手动输入它们但是我需要能够拥有超过100,000个选项的列表.

我的想法是有一个表("lovdata")包含所有可能的字符串并运行查询来删除字段"喜欢"其他表中任何字符串的行.

任何人都可以指出我是否/如何以这种方式使用?

非常感谢,Cap

Vin*_*rat 7

确定你可以加入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)