我有两个相互关联的表,我只想从一个表中删除记录。表结构如下
Table : Users
userunique, active, unSubscribed
Table : userBilling
userunique, billCreatedDate,billstatus
我想删除那些不再活跃的用户的账单,条件如下。
billcreateddate < 2011-12-30
billstatus=2 //pending
active='0'
unSubscribed<'2011-12-30'
我已经写了一个查询,但它不是我所期望的。我只想从 userBilling 表而不是 Users 表中删除记录
select * from userBilling ubill, Users user
WHERE ubilll.userUnique=user.userUnique
AND ubill.billCreatedDate<'2011-12-30'
AND ubill.billstatus = '2'
AND ((user.active = '0') AND (user.unsubscribed>'2011-01-01')
AND user.unSubscribed<'2011-12-30'))
但我猜上面的查询包括两个表的结果。请推荐!
谢谢,
最佳答案
DELETE a
FROM userBilling a
INNER JOIN users b
ON a.auserUnique = b.userUnique
WHERE billcreateddate < 2011-12-30 OR
billstatus = 2 OR
active = 0 OR
unSubscribed < '2011-12-30'
如果您希望所有条件都为true,请将OR
更改为AND
。
关于MySQL 仅从单表中删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13935674/