2017-06-15 43 views
1

我有麻烦,SQL删除类别,如果类别为空

我有一个类别的产品。我的问题是,如果类别为空且没有产品,我如何从数据库中删除类别。

我的代码

"DELETE 
FROM category AS a 
INNER JOIN products AS b 
ON a.cat_id = b.cat_id 
WHERE a.user_id = ? 
AND a.cat_id = ? LIMIT 1"; 

如果我执行这个代码我得到一个错误:致命错误:未捕获的异常“PDOException”有消息“SQLSTATE [42000]:语法错误或访问冲突:1064您有一个错误在你的SQL语法中;

回答

0
DELETE FROM category AS a 
Where a.cat_id = ? 
And not exists(
Select 1 
From products p 
Where p.cat_id = a.cat_id 
); 

此查询我的绑定变量和过滤器倒是猫匹配拿出那些有相应产品的人。

0

我会用not exists运营商去寻找类别[不]在products表:

DELETE 
FROM category c 
WHERE NOT EXISTS (SELECT * 
        FROM products p 
        WHERE c.cat_id = p.cat_id);