Select 来自 wordpress (woocommerce) 中两个表的不同值

Select distinct values from two tables in wordpress (woocommerce)

我正在努力:

  1. Select 不同的(到 ID)ID(post 标识)和 post_title 来自 wp_posts 其中 post_status = 发布和 post_type =产品;
  2. Select 不同于 post_id post_id 和 meta_value 来自 wp_postmeta;

我需要使用一个 select 语句来完成此操作,因此我已经尝试了尽可能多的尝试和搜索。我最后试过的是这个:


    SELECT a.ID,a.post_title,b.post_id,b.meta_value FROM 
    (
        SELECT DISTINCT ID FROM wp_posts
        UNION
        SELECT DISTINCT post_id FROM wp_postmeta
    ) x LEFT JOIN
    wp_posts a ON x.ID = a.ID LEFT JOIN
    wp_postmeta b ON x.post_id = b.post_id

但是,当我尝试时,它告诉我:

#1054 - 'on clause'

中的未知列 'x.post_id'

我什么都没想,有人能帮我吗?

----编辑----

@Rahul,

这很好,但仍然 returning 非不同值,我正在使用它,(注意,公共列:a.ID = yy.post_id):

    SELECT a.ID, a.post_title, b.post_id, b.meta_value FROM wp_posts a
    LEFT JOIN (

        SELECT DISTINCT ID
        FROM wp_posts
    )xx ON a.ID = xx.ID
    LEFT JOIN (

        SELECT DISTINCT post_id
        FROM wp_postmeta
    )yy ON a.ID = yy.post_id
    LEFT JOIN wp_postmeta b ON b.post_id = yy.post_id
    WHERE a.post_type = 'product'
    AND a.post_status = 'publish'
    LIMIT 0 , 30

是return:

ID post_title post_id meta_value

141 测试粉彩 141 1

141 特斯特粉 141 1436921168:1

141 测试粉彩 141 123

141 Pastel de Teste 141 可见

是的,因为您的子选择结果集中没有 post_id 列。您需要更改查询并将它们分开

SELECT a.ID,a.post_title,b.post_id,b.meta_value FROM
wp_posts a LEFT JOIN 
( SELECT DISTINCT ID FROM wp_posts ) xx ON a.ID = xx.ID
LEFT JOIN ( SELECT DISTINCT post_id FROM wp_postmeta ) yy 
ON a.some_common_column = yy.some_common_column
LEFT JOIN wp_postmeta b ON b.post_id = yy.post_id;

编辑:

根据您的编辑 post;您需要获取行号并获取不重复的行号,例如

SELECT ID, post_title, post_id, meta_value
FROM ( 
SELECT a.ID,
a.post_title,
b.post_id,
b.meta_value,
(@row_number:=@row_number + 1) AS rownum 
FROM wp_posts a
JOIN (SELECT @row_number:=0) r 
LEFT JOIN wp_postmeta b ON a.ID = b.post_id ) xxx
WHERE rownum = 1;