mysql - 从 MySQL 中的多个表中获取多行中的多个值

标签 mysql sql

我正在使用 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/

相关文章:

php - SELECT 在 UPDATE 之后给出旧值

java - sql(postgres)- 如何创建一个触发器,将表中的两行相乘并将它们添加到另一个表中的一行?

php - varchar 数据类型不显示长条目的结果

sql - 仅在 SQL 中根据条件删除表中的重复项

php - 在表名中动态插入数据

PHP编码问题: symbols showing interrogation mark

mysql - SQL 选择条目及其关联图像

php - 按匹配百分比将用户偏好与对象属性相匹配

php - 哪种方式会有更好的性能 - 使用 sql 查询或 php 过滤/排序结果?

php - 如何强制列别名为特定数据类型?