Sql查询保持"计数"已删除的行

Vzl*_*tea 2 mysql sql database

我有一个机密网站...我正在尝试制作一个SQL查询,用于计算用户在过去7天内发布的广告数量,但我有一个问题...

我试图在用户个人资料中显示例如:[用户名]在过去7天内发布了30个广告

这是我的SQL查询 - >

SELECT COUNT(*) 
FROM table_name 
WHERE user_id = '[user_id]' AND created_date > NOW() - INTERVAL 7 DAY
Run Code Online (Sandbox Code Playgroud)

所以在我的情况下,"table_name"包含来自所有用户的所有广告,并且" user_id='[user_id]'"我向用户显示他的广告数量,向用户B显示他的广告数量等...

所以这个查询工作,它从"[用户名]正确计算广告的数量,但是,例如,如果用户在网站的进入和删除的1,2或任何他的广告的号码,这个号码会被"minused"已发布30过去7天内的广告"

  1. 例如,假设用户在过去5天内发布了20个广告 - 正确的结果是[用户名]在过去7天内发布了20个广告
  2. 现在用户进入网站并删除了4个广告 - 现在结果是[用户名]在过去7天内发布了16个广告

有人可以帮助我,我可以添加什么来查询,以便计数仍然显示正确的广告数量(在我的情况下是20个广告),即使广告被删除..

谢谢干杯

Mar*_*ers 6

不是使用DELETE ... WHERE ...语句删除行,而是添加deleted列并使用UPDATE语句:

UPDATE ... SET deleted = 1 WHERE ...
Run Code Online (Sandbox Code Playgroud)

然后你的计数功能无需修改即可运行.

当然,您现在必须修复所有其余代码,以便不显示已删除的广告.您可以通过添加WHERE NOT deleted到所有其他查询来执行此操作.您还可以创建仅显示未删除广告的视图,并更新代码以查询此视图而不是原始表.