将wp_postmeta表连接到自身,以查找与特定元键相关的所有条目。值

时间:2017-09-28 13:18:20

标签: php mysql wordpress join

我的表格 wp_postmeta 包含以下列:

  • meta_id

  • POST_ID

  • meta_key

  • meta_value

我想只检索以下条目:

-----------------------------------------------------------------
| meta_id  | post_id  |    meta_key          |  meta_value      |
|----------|----------|----------------------|------------------|
|   1111   |   2222   | user_id              | 10               |
|----------|----------|----------------------|------------------|
|   1112   |   2222   | user_full_name       | Customer Name    |
|----------|----------|----------------------|------------------|
|   1113   |   2222   | renewal_order_total  | 00,00            |
|----------|----------|----------------------|------------------|
|   1114   |   2222   | order_bandeira       | Visa             |
|----------|----------|----------------------|------------------|
|   1115   |   2222   | order_token          | token            |
|----------|----------|----------------------|------------------|
|   1116   |   2222   | product_name         | Product X        |
-----------------------------------------------------------------

在我的代码中,我有user_id,我想将这些值分组 通过此用户ID,如上所示,此表中的meta_key我尝试了一些查询,但所有查询均未成功。

我尝试的其中一个查询是基于this question.

的回答
SELECT a.* FROM wp_postmeta a 
LEFT OUTER JOIN wp_postmeta b ON a.post_id = b.post_id AND b.meta_value = 10 
WHERE a.meta_value = 10 AND b.meta_key = 'user_id'

我在此查询中获得的结果只是user_id

的行
----------------------------------------------------------------|
| meta_id  | post_id  |    meta_key          |  meta_value      |
|----------|----------|----------------------|------------------|
|   1111   |   2222   | user_id              | 10               |
-----------------------------------------------------------------

1 个答案:

答案 0 :(得分:1)

您的查询是正确的,它将表连接到自身,但问题是您告诉它只返回a.meta_value = 10的行而不是它为该user_id找到的所有行。

从像这样的WHERE中删除a.meta_value条件,它应该可以工作:

SELECT a.* FROM wp_postmeta a 
LEFT OUTER JOIN wp_postmeta b ON a.post_id = b.post_id AND b.meta_value = 10 
WHERE b.meta_key = 'user_id'