我是新手,如果标题令人困惑,我很抱歉。我正在构建一个简单的 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/