Syntax MariaDB 10.1中窗口功能的替代方案
我有一个windows函数,在我的代码中按分区:Syntax MariaDB 10.1中窗口功能的替代方案,syntax,mariadb,groupwise-maximum,Syntax,Mariadb,Groupwise Maximum,我有一个windows函数,在我的代码中按分区: FROM (SELECT wp_posts.id, wp_postmeta.post_id, post_title, post_type, m
FROM (SELECT wp_posts.id,
wp_postmeta.post_id,
post_title,
post_type,
meta_value,
Row_number()
OVER(
partition BY post_title
ORDER BY wp_postmeta.meta_value) rn
但显然,10.2之前的MariaDB不支持这一点——我使用的是10.1。有人能推荐一些既高效又适用于MariaDB 10.1的替代代码吗
dbfiddle告诉我们查询的目的。有两个表wp_posts包含post_title列和wp_postemta,其中包含meta_value列。这两个表都有一个整数递增的列wp_posts.ID、wp_postETA.post_ID,允许它们链接/联接1个匹配与1,2个匹配与2,以此类推。。post_title和meta_value不一定是唯一的,但是,我想按post_title进行分组选择。始终选择最低的meta_值,然后为该meta_值选择相应的wp_posts.ID遵循[groupwise maximum]标记以获取实现该目标的许多提示。告诉我们查询的意图。有两个表wp_posts包含post_title列和wp_postETA,其中包含meta_值列。这两个表都有一个整数递增的列wp_posts.ID、wp_postETA.post_ID,允许它们链接/联接1个匹配与1,2个匹配与2,以此类推。。post_title和meta_value不一定是唯一的,但是,我想按post_title进行分组选择。始终选择最低的meta_值,然后为该meta_值选择相应的wp_posts.ID跟随[groupwise maximum]标记以获取实现该目标的许多提示。
create table wp_posts (
ID integer primary key auto_increment,
post_title varchar(30),
post_type varchar(30)
);
✓
create table wp_postmeta (
ID integer primary key auto_increment,
post_id integer,
meta_key varchar(30) not null default '_regular_price',
meta_value integer not null
);
✓
insert into wp_posts (post_title, post_type) values
('Apple Pie','Product'),
('French Toast','Product'),
('Shepards Pie','Product'),
('Jam Pie','Product'),
('Jam Pie','Product'),
('Plate','Not a Product'),
('Bucket','Not a Product'),
('Chequebook','Not a Product'),
('French Toast','Product'),
('French Toast','Product'),
('Banana','Product'),
('Banana','Product'),
('Banana','Product');
✓
insert into wp_postmeta (post_id, meta_value) values
(1,10),
(2,5),
(3,9),
(4,8),
(5,11),
(6,12),
(7,10),
(8,6),
(9,1),
(10,1),
(11,7),
(12,2),
(13,2);
✓
-- Deleting all duplicate products in wp_posts table
DELETE FROM wp_posts
WHERE id IN (SELECT id
FROM (SELECT id,
post_title,
post_type,
meta_value
FROM (SELECT wp_posts.id,
wp_postmeta.post_id,
post_title,
post_type,
meta_value,
Row_number()
OVER(
partition BY post_title
ORDER BY wp_postmeta.meta_value) rn
FROM wp_postmeta
JOIN wp_posts
ON wp_postmeta.post_id = wp_posts.id
WHERE wp_posts.post_type = 'Product'
AND wp_postmeta.meta_key = '_regular_price'
) t
WHERE t.rn <> 1) AS aliasx);
✓