【问题标题】:Return all joined rows in SQL返回 SQL 中所有连接的行
【发布时间】:2015-07-26 11:15:13
【问题描述】:

所以我在搞乱 wordpress 并试图让一行加入的所有行。现在,我似乎只能得到它加入的一行。我知道必须有一些 GROUP BY 的元素,但我似乎无法弄清楚。

SELECT posts.*, meta.meta_value
                FROM wp_g6exrf_posts as posts
                LEFT OUTER JOIN wp_g6exrf_postmeta as meta
                ON meta.post_id = posts.ID
                WHERE ! ( posts.post_status = 'auto-draft' ) 
                GROUP BY meta.post_id

所以我要加入元表并期望有多个列满足加入条件。

衷心感谢您的帮助。非常感谢。

【问题讨论】:

  • 如果不查看表中的数据就无法诊断。为什么“WHERE”后面有感叹号?这不是有效的 Sql Server 语法。
  • 我去掉了sql server标签; WordPress 是一个 MySQL 客户端。

标签: mysql wordpress join


【解决方案1】:

postmeta 没有看到meta_key 就毫无意义。

除非您进行某种聚合,否则 GROUP BY 没有意义。它将每个帖子的多行压缩为一个,并仅返回一个 meta_value 项目,一个随机选择的项目。

试试这个:

SELECT posts.*, 
       meta.meta_key, meta.meta_value
  FROM wp_g6exrf_posts as posts
  LEFT OUTER JOIN wp_g6exrf_postmeta as meta ON meta.post_id = posts.ID
 WHERE ! ( posts.post_status = 'auto-draft' ) 
 ORDER BY posts.id, meta.meta_key, meta.meta_value

【讨论】:

  • 非常感谢。效果很好......为了将来参考,SQL 中有没有办法创建一个连接值数组,而不是为每个连接创建一个单独的值?我意识到您可以将其拆分为两个查询来实现这一点,但能够同时完成它会很好。无论如何,再次感谢。
猜你喜欢
  • 1970-01-01
  • 2019-03-08
  • 2015-01-20
  • 2014-12-07
  • 2020-12-17
  • 2014-01-16
  • 1970-01-01
  • 2023-03-09
  • 2018-07-10
相关资源
最近更新 更多