我的表格 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 |
-----------------------------------------------------------------
答案 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'