php – 如何在连接2个表时减少MySQL上的用户优先级字段?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 如何在连接2个表时减少MySQL上的用户优先级字段?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1919字,纯文字阅读大概需要3分钟。
内容图文
![php – 如何在连接2个表时减少MySQL上的用户优先级字段?](/upload/InfoBanner/zyjiaocheng/902/a5d9122bbdf64c3cb7b2be9f1ecb41be.jpg)
假设我有电子邮件和优先级表:
优先级表字段:
Fields: uid, priority
电子邮件表格字段:
Fields: id, uid, content
每个用户都有很多电子邮件.在脚本中,我根据用户的优先级(通过加入2个表)来获取用户的电子邮件.但是当我批量获取并且具有最高优先级的用户在队列中有1000个邮件时问题就出现了.第二个用户的优先级为99.我应该发送最多2个具有最高优先级的用户的电子邮件,因为在第一个用户的第三个记录中,他的优先级将是97且低于第二个用户.
如何解决这个问题呢?我正在用PHP编程,所以如果在PHP中更好地解决该解决方案,请告诉我如何.
这是主要查询:
select * from emails e left join by priority p on e.uid=p.uid order by priority DESC
EDIT1:
电子邮件表格中的数据:
id uid email_content
1 321 some example data
2 434 some other example data
3 321 another from first user
4 321 again another from 321
优先级表中的数据如下:
id uid priority
1 321 100
2 434 99
uid等于321的用户最初具有最高优先级,但不是所有电子邮件都是如此.发送第一封电子邮件时,优先级应为99,并且在第二封电子邮件优先级等于98之后.现在不应发送第三封电子邮件,并且具有434的uid的用户的电子邮件具有最高优先级.
由于我已经获取了10条记录,因此未获取更新的优先级!
解决方法:
只需简单地获取一个用户.发送电子邮件,然后只更新优先级.
<?php
$mysqli = new mysqli("127.0.0.1", "root","", "stackoverflow");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
$query = "SELECT e.id, email_content,p.uid from emails e INNER JOIN priority p ON e.uid=p.uid ORDER BY priority DESC LIMIT 1";
$updateQuery = "UPDATE priority SET priority = priority - 1 WHERE uid = ?";
while (true) {
$result = $mysqli->query($query);
if ($result->num_rows == 0) {
break;
}
$row = $result->fetch_row();
// @TODO send the mail
// delete the email entry
$mysqli->query("DELETE FROM emails WHERE id = $row[0]");
// NOW update the PRIORITY
$mysqli->query("UPDATE priority SET priority = priority - 1 WHERE uid = $row[2]");
}
内容总结
以上是互联网集市为您收集整理的php – 如何在连接2个表时减少MySQL上的用户优先级字段?全部内容,希望文章能够帮你解决php – 如何在连接2个表时减少MySQL上的用户优先级字段?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。