基本上每隔24小时,我的脚本会从table01中选择10个随机图像,将数据存储在一个单独的table02中,这样我们的用户就可以投票给这些图像。
24小时后,脚本再次运行,并应使用table02中的数据更新table01,然后截断table02从table01中选择10个新图片,并将数据存储在table02中,然后再次进行投票。
准备好的声明,选择10个随机图像
(这个SQL既是INSERT又是SELECT)
"两个sql在一个,所以我不必在我使用它之前存储数据"
$stmt = $dbCon->prepare(" INSERT INTO table02 "
. " (rating_daily_views, rating_daily_votes, rating_daily_rating, " rating_daily_category, rating_daily_imgId) "
. " SELECT views, votes, rating, category, id"
. " FROM table01 "
. " WHERE category IN (?) ORDER BY RAND() LIMIT 10 ");
$stmt->bind_param('i', $cat1);
$stmt->execute();
$stmt->close();
这是我的两个陈述,如果可能的话,我愿意合并为一个?
选择陈述
$stmt = $dbCon->prepare("SELECT rating_daily_views, rating_daily_votes, rating_daily_rating, rating_daily_imgId "
. " FROM table02 ");
$stmt->execute();
更新声明
$stmt = $dbCon->prepare(" UPDATE table01 SET "
. " views = ?, "
. " votes = ?, "
. " rating = ? "
. " WHERE id = ? ");
$stmt->bind_param('iii', $views, $votes, $rating, $id);
$stmt->execute();
$stmt->close();
答案 0 :(得分:0)
考虑MySQL支持的UPDATE table01 t1
INNER JOIN table02 t2 ON t1.id = t2.rating_daily_imgId
SET t1.views = t2.rating_daily_views,
t1.votes = t2.rating_daily_votes,
t1.rating = t2.rating_daily_rating
查询:
yourcollection.update_one(
{'_id': fakeid64},
{'$pullAll': {'Dropper': yourcollection.find_one({'_id': 'fakeid64'})['Dropper'][:9000]}}
)