我有2个sql表:
// groups
| id_group | namegroup |
+------------+-----------+
| 30 | s |
// contacts
| name | group |
+------+-------+
| juan | s |
我需要从ID中删除一个组,但没有与之关联的联系人。 我测试以下查询但不起作用。
DELETE
FROM group
WHERE id_group = 30
AND (
SELECT
count(*) AS id
FROM contacts co
INNER JOIN GROUP c ON co. GROUP = c.namegroup
WHERE c.id_group = 30
) = 0
由于
答案 0 :(得分:0)
如果你定义了firigen键,mysql会处理这个问题而你不需要做任何事情
在这些情况下(没有forigen键)我通常首先运行以下查询:
select count(*) as id from contacts co inner join group c on co.group=c.namegroup where c.id_group=30
并告诉用户他们是否可以删除以及是否可以删除该行:
delete from group where id_group=30
我试图找到一个类似查询的解决方案,但你不能为你提出这个解决方案。
答案 1 :(得分:0)
如果您希望仅在群组未与任何联系人关联时删除具有ID = 30
的群组,则可以尝试以下查询:
查询#1:
DELETE
`groups`
FROM `groups`
LEFT JOIN contacts
ON contacts.`group` = `groups`.namegroup
WHERE `groups`.id_group = 30
AND contacts.`group` IS NULL;
如果您要删除所有没有任何关联联系人的群组,请尝试以下查询:
查询#2:
DELETE
`groups`
FROM `groups`
LEFT JOIN contacts
ON contacts.`group` = `groups`.namegroup
WHERE contacts.`group` IS NULL;