php - 我需要从 MySQL 数据库中选择最新行,但验证我是否还返回具有给定 ID 的行

标签 php mysql

我是新手,如果标题令人困惑,我很抱歉。我正在构建一个简单的 php/mysql 画廊之类的。当用户第一次访问它时,它将显示最新的 25 个条目,并且还允许异地链接到列表中的各个项目。如果 URL 包含 ID,JavaScript 将滚动到它。但是,如果有超过 25 个条目,我的查询可能会获取最新结果,但会忽略恰好作为 ID 出现在 URL 中的较旧条目。

这意味着我需要做这样的事情......

SELECT * FROM `submissions` WHERE uid='$sid'

但是在成功找到具有特殊ID的提交之后,也可以这样做

SELECT * FROM `submissions`  ORDER BY `id` DESC LIMIT 0, 25`

这样我就可以填充画廊的其余部分。

我可以查询该数据库两次,但我假设有一些巧妙的方法可以避免这种情况。 MySQL 还对所有内容进行排序(基于最新、 View 和其他变量),并且使用两个查询会打破这一点。

最佳答案

您可以像这样限制 UNION:

(SELECT * FROM submissions WHERE uid = '$uid')
UNION
(SELECT * FROM submissions WHERE uid <> '$uid' ORDER BY `id` LIMIT 25)
LIMIT 25

注意 LIMIT 被列出两次,因为在第一个查询返回结果的情况下,我们在联合集中将有 26 个结果。这也会将“搜索到”的项目放在返回的排序结果集中的第一位(其他 24 个结果按排序顺序显示)。如果这不合需要,您可以在联合中放置 ORDER BY,但如果恰好是第 26 条记录,您的搜索结果将被截断。

如果您需要 25 行并对所有行进行排序,我的猜测是您需要执行两次查询方法(根据第一个查询是否匹配,将第二个查询限制为 24 或 25 条记录),然后简单地将uid匹配的结果插入排序记录中适当的位置,然后显示。

关于php - 我需要从 MySQL 数据库中选择最新行,但验证我是否还返回具有给定 ID 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14968270/

相关文章:

php - Android:无法从真实网站下载大尺寸数据库到 SQLite 数据库

php - Android 与 MySQL 数据库的基本交互

php - 使用/不使用 php 在 MYSQL 中按日期求和和分隔的最佳方法

php - 如何在我现有的 PHP 发布系统之上构建评论系统?

mysql - 如何获取今天每五分钟的记录数?

php - 计算酒店房间中所有可能的人员组合

php - Wordpress + Paypal 在 Paypal Payment 上更改用户角色

mysql全文搜索不首先返回最相关的结果

python - 如何提高pandas中mysql查询的处理速度

php - 如何从 MySQL 数据库下载文件