gpt4 book ai didi

MySQL 使用 LIMIT 返回第一条记录

转载 作者:行者123 更新时间:2023-11-29 14:58:16 25 4
gpt4 key购买 nike

假设:

            $sql     = " SELECT * FROM `artwork` WHERE approved = '1' ";
if($filter) $sql .= " AND $filter = '$filter_value' ";
$sql .= " ORDER BY subdate DESC, id DESC
LIMIT 30,30";

如果我要引入一个起点(例如 WHERE id > 50),并且该规定会影响我的 LIMIT,使其仅返回 10 个结果。请记住,我想要 30 个结果。有没有办法从记录1开始继续选择?

编辑:我意识到在这个例子中我要求 id > 50,而且如果我们要倒回,第一条记录肯定会具有较低的 ID。在我的场景中,这没问题。

谢谢,杰森。

最佳答案

If there are 100 records and you're only selecting 10 rows (#90 - #100), you want to get 20 more rows (#1 - #20)

如果这些是您的限制,我认为您将无法从单个查询中获得所需的结果集。

这是一个存储过程,它创建一个临时表以获得所需的结果:

DELIMITER //
DROP PROCEDURE IF EXISTS TMP_TABLE_ARTWORK//
CREATE PROCEDURE TMP_TABLE_ARTWORK (_offset INT, _count INT)
BEGIN
DECLARE res_total INT DEFAULT 0;
SELECT COUNT(*) INTO res_total FROM artwork;
CREATE TEMPORARY TABLE IF NOT EXISTS artwork_tmp ( t_pseudo INT, t_old INT, t_subdate DATETIME );
INSERT INTO artwork_tmp ( t_pseudo, t_old, t_subdate ) SELECT artwork.id, artwork.id, artwork.subdate FROM artwork ORDER BY artwork.subdate DESC;
INSERT INTO artwork_tmp ( t_pseudo, t_old, t_subdate ) SELECT ( artwork.id + res_total ), artwork.id, artwork.subdate FROM artwork ORDER BY artwork.subdate DESC;
PREPARE STMT FROM "SELECT * FROM artwork_tmp ORDER BY t_pseudo LIMIT ?,?";
SET @offset = _offset;
SET @count = _count;
EXECUTE STMT USING @offset, @count;
DROP TABLE artwork_tmp;
END //
DELIMITER ;

您可能需要修改它以使其执行您想要的操作(显然,如果您运行的是较新版本的 MySQL,则不再需要准备好的语句解决方法)。

关于MySQL 使用 LIMIT 返回第一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3939739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com