您可以使用group by和having count(*)根据帖子标题的过滤器(其中)获取副本>1.
select wp_posts.post_title
from wp_postmeta
JOIN wp_posts ON wp_postmeta.post_ID=wp_posts.ID
WHERE post_type = 'product'
AND meta_key = '_regular_price'
Group by wp_posts.post_title
having count(*) > 1
select wp_posts.post_title, min(wp_posts.ID)
from wp_postmeta
JOIN wp_posts ON wp_postmeta.post_ID=wp_posts.ID
WHERE post_type = 'product'
AND meta_key = '_regular_price'
Group by wp_posts.post_title
having count(*) > 1
相反,您应该使用带有min(id)的聚合结果作为联接所需值的子查询
select wp_posts.ID
, wp_posts.post_title
, wp_postmeta.post_id
, wp_posts.post_type
, wp_postmeta.meta_key
, wp_postmeta.meta_value
from wp_postmeta
JOIN wp_posts ON wp_postmeta.post_ID=wp_posts.ID
inner join (
select wp_posts.post_title, min(wp_posts.ID) min_id
from wp_postmeta
JOIN wp_posts ON wp_postmeta.post_ID=wp_posts.ID
WHERE post_type = 'product'
AND meta_key = '_regular_price'
Group by wp_posts.post_title
having count(*) > 1
) t ON t.min_id = wp_posts.ID
and t.post_title = wp_posts.post_title
但是,如果您希望post_title的所有第一个值独立于标题是否重复的事实(如在您的示例中),那么请避免包含count(*)的子句>1.
select wp_posts.ID
, wp_posts.post_title
, wp_postmeta.post_id
, wp_posts.post_type
, wp_postmeta.meta_key
, wp_postmeta.meta_value
from wp_postmeta
JOIN wp_posts ON wp_postmeta.post_ID=wp_posts.ID
inner join (
select wp_posts.post_title, min(wp_posts.ID) min_id
from wp_postmeta
JOIN wp_posts ON wp_postmeta.post_ID=wp_posts.ID
WHERE post_type = 'product'
AND meta_key = '_regular_price'
Group by wp_posts.post_title
) t ON t.min_id = wp_posts.ID
and t.post_title = wp_posts.post_title
问题似乎是将尊重最小值(wp_posts.ID)更改为p_posttea.meta_值
select wp_posts.ID
, wp_posts.post_title
, wp_postmeta.post_id
, wp_posts.post_type
, wp_postmeta.meta_key
, wp_postmeta.meta_value
from wp_postmeta
JOIN wp_posts ON wp_postmeta.post_ID=wp_posts.ID
inner join (
select wp_posts.post_title, min(wp_postmeta.meta_value) min_val
from wp_postmeta
JOIN wp_posts ON wp_postmeta.post_ID=wp_posts.ID
WHERE post_type = 'product'
AND meta_key = '_regular_price'
Group by wp_posts.post_title
) t ON t.min_val = wp_postmeta.meta_value
and t.post_title = wp_posts.post_title
对于相同的meta_值,排除第二行
使用最小值(id)
select wp_posts.ID
, wp_posts.post_title
, min( wp_postmeta.post_id)
, wp_posts.post_type
, wp_postmeta.meta_key
, wp_postmeta.meta_value
from wp_postmeta
JOIN wp_posts ON wp_postmeta.post_ID=wp_posts.ID
inner join (
select wp_posts.post_title, min(wp_postmeta.meta_value) min_val
from wp_postmeta
JOIN wp_posts ON wp_postmeta.post_ID=wp_posts.ID
WHERE post_type = 'product'
AND meta_key = '_regular_price'
Group by wp_posts.post_title
) t ON t.min_val = wp_postmeta.meta_value
and t.post_title = wp_posts.post_title
group by wp_posts.ID
, wp_posts.post_title
, wp_posts.post_type
, wp_postmeta.meta_key
, wp_postmeta.meta_value