MySQL删除它们所属的组后删除记录

时间:2014-06-01 22:18:05

标签: mysql sql sql-delete

有桌子:

drop table if exists groups;
create table groups
(
    symbol varchar(10);
    group_name varchar(10);
    deafult_discount int(10)
    PRIMARY KEY (symbol)
);

insert into groups(symbol,group_name,deafult_discount)
values
('medium','medium_company',5),
('small','small_company',0),
('big','big_company',10);

use exercise;

create table Companies 
(
    ID  int,
    Name    varchar(100),
    City    varchar(100),
    c_size varchar(100),
    PRIMARY KEY (ID)
);

insert into Companies(ID, Name, city, company_size) 
values
(222, 'Karma LLC','CITY2', 'big'),
(223, 'Manny Ind.','CITY1', 'medium'),
(224, 'Random PLC','CITY1', 'medium'),
(225, 'Hijack LLC','CITY1', 'medium'),
(226, 'Travels LLC','CITY1', 'small'),
(227, 'Mirana Ind.','CITY2', 'small'),
(228, 'Polla Ind.','CITY3', 'small'),
(229, 'Americano LLC','CITY3', 'small'),
(230, 'Macaroni LLC','CITY4', 'small');

我想知道在删除其中一个组后自动删除公司的方式。例如,我从表组中删除组“medium”,我想同时删除所有company_size ='medium'的公司。
我不需要查询代码,可能是描述如何操作。

1 个答案:

答案 0 :(得分:0)

正如我在评论中写的那样 - 外键和触发器以及你的朋友,你也可以运行这个查询来删除所有孤立的公司以保持数据的完整性

delete from `Companies` where `company_size` NOT IN (select `symbol` from `groups`);

您可以使用触发器但是如果您在共享服务器上,那么您可以将相同的查询放在某个cron中。