错误:
在“字段列表”未知列“ID”
我百思不得其解。正如你可以看到下面,ID
是wp_posts
桌子底下一列:
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
);
查询产生的错误:
DELETE FROM wp_posts
WHERE id IN (SELECT id
FROM (SELECT id,
post_title,
post_type,
meta_value
FROM (SELECT 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);
) t where t.rn <> 1
) AS aliasx
);
无论数据库的,你有这样的代码:
(SELECT id,
post_title,
post_type,
meta_value
FROM (SELECT wp_postmeta.post_id,
post_title,
post_type,
meta_value,
Row_number()
OVER(
partition BY post_title
ORDER BY wp_postmeta.meta_value) rn
有子查询没有id
。据推测,你打算post_id
而非id
。
您可以简化您的查询像使用EXISTS
以下
DELETE wp
FROM wp_posts wp
WHERE EXISTS (SELECT 1
FROM wp_postmeta md
WHERE md.post_id = wp.id
AND wp.post_type = 'Product'
AND md.meta_key = '_regular_price')
戈登·利诺夫是正确的( - 我会接受他的答案),我不小心从子查询中省略wp_posts.ID
。解决办法是wp_posts.ID,
添加到低阶子查询的SELECT列表,以便它可以在更高阶的子查询中选择:
(SELECT wp_posts.ID, wp_postmeta.post_id,post_title,post_type ,meta_value,