用select条件删除sql

时间:2016-05-24 03:45:05

标签: php mysql select

也许有人可以帮助我。

我有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

由于

2 个答案:

答案 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;