Mysql 通过根据父项id跳过前5条记录来选择子行
对于下面的查询,我得到一个错误Mysql 通过根据父项id跳过前5条记录来选择子行,mysql,Mysql,对于下面的查询,我得到一个错误这个版本的MySQL还不支持“LIMIT&IN/ALL/ANY/SOME子查询” SELECT * FROM `wp_dash_competition_versions` _versions WHERE DATEDIFF(CURRENT_TIMESTAMP, _versions.created_at) > 20 AND id NOT IN ( SELECT id FROM `wp_dash_competition_versions` WHERE com
这个版本的MySQL还不支持“LIMIT&IN/ALL/ANY/SOME子查询”
SELECT * FROM `wp_dash_competition_versions` _versions
WHERE DATEDIFF(CURRENT_TIMESTAMP, _versions.created_at) > 20 AND
id NOT IN (
SELECT id FROM `wp_dash_competition_versions` WHERE competition_id = _versions.competition_id
ORDER BY created_at LIMIT 5
)
但是,联接查询不会对给定的父id应用限制
是否可以实现从子表中选择行的单个查询,跳过给定父表id的前5行
我开发查询主要是为了删除操作来修剪表。我需要先选择以确保语句正确
CREATE TABLE `wp_dash_competition_versions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`competition_id` bigint(20) unsigned DEFAULT NULL,
`competition_serialised` mediumtext COLLATE utf8mb4_unicode_520_ci,
`created_user_id` bigint(20) unsigned NOT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
)
在answer中找到,您说它不适用,但使用联接似乎是答案视频查询不需要包含子查询,它不适用,因为它不会对父IDI的最新版本对comp版本执行排除。我已添加了一个create table@草莓
SELECT _version.*
FROM `wp_dash_competition_versions` _version
INNER JOIN (
SELECT competition_id, GROUP_CONCAT(id ORDER BY created_at DESC) _versions
FROM `wp_dash_competition_versions` GROUP BY competition_id
) group_versions
ON _version.competition_id = group_versions.competition_id
AND FIND_IN_SET(id, _versions) > 5
AND DATEDIFF(CURRENT_TIMESTAMP, created_at) > 20