我正在使用 WordPress。我想从 wp_posts
表中获取所有内容,并从 postmeta
表中获取两个值。
“wp_postmeta”有列“post_id”、“meta_key”和“meta_value”。
到目前为止,我能够获得“元值”之一:
SELECT wp_post.*, $wpdb->postmeta.meta_value AS votes
FROM wp_posts
INNER JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id )
WHERE post_type='post'
AND wp_postmeta.meta_key = 'votes'
但是,我还想获得另一个具有相同“post_id”但不同“meta_key”的“meta_value”。如何将此查询扩展到“元值”?
最佳答案
如果您不希望每个帖子有多行,您可以通过多个连接来实现:
SELECT wp_post.*, metavotes.meta_value AS votes, metaother.meta_value AS other
FROM wp_posts
INNER JOIN wp_postmeta metavotes
ON ( wp_posts.ID = wp_postmeta.post_id AND wp_postmeta.meta_key = 'votes')
INNER JOIN wp_postmeta metaother
ON ( wp_posts.ID = wp_postmeta.post_id AND wp_postmeta.meta_key = 'other')
WHERE post_type='post'
(假设 wp_postmeta 中的每个元数据总是只有 1 行。我对 wordpress 不够熟悉,不知道是否是这种情况。如果元数据是可选的,请改用 LEFT OUTER JOIN。如果可以有多个,你想要什么样的输出?)
关于mysql - 从 MySQL 中的多个表中获取多行中的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7296477/