java - JOIN 2 个表并选择特定行

标签 java mysql wordpress javafx

我使用 Wordpress 表来填充 javafx TableView。 在 WP db 中,我有 2 个表 wp_posts 和 wp_postmeta,我需要通过 ID(wp_postmeta 中的 post_id)加入表,并从 wp_postmeta (不是全部)中选择特定行。

例如: wp_postmeta结构post_id,meta_key,meta_value。在meta_key中有3行 - _yoast_wpseo_title、._yoast_wpseo_metadesc、._yoast_wpseo_focuskeywords 我需要列 meta_value 中的行值。

我的代码:

ResultSet rs = connection.createStatement().executeQuery(" SELECT wp_postmeta._yoast_wpseo_title, wp_postmeta._yoast_wpseo_metadesc, wp_postmeta._yoast_wpseo_focuskeywords, wp_posts.post_title, wp_posts.post_name FROM wp_postmeta INNER JOIN wp_posts ON wp_posts.ID = wp_postmeta.post_id ");

当然,我收到错误,指出未找到列 _yoast_wpseo_title、_yoast_wpseo_metadesc、_yoast_wpseo_focuskeywords,因为它们是行。

我怎样才能做到这一点? (我使用java9、javafx、mysql jdbc)。或者我可能必须使用PreparedStatement?

截图: enter image description here

最佳答案

由于您想根据 meta_key 字段的内容过滤查询,因此您使用 WHERE 子句:

SELECT wp_postmeta.meta_key, wp_postmeta.meta_value, wp_posts.post_title
   FROM wp_postmeta INNER JOIN  wp_posts ON wp_posts.ID = wp_postmeta.post_id
   WHERE wp_postmeta.meta_key IN ('_yoast_wpseo_title', '_yoast_wpseo_metadesc', '_yoast_wpseo_focuskeywords')

您正在提供要匹配的元键的列表。这将为每个帖子提供(最多)三行。

如果您只想为每个帖子一行,事情会变得更加复杂(并且可能不值得麻烦)。您可以使用GROUP BY post_id然后研究Aggregate functions .

关于java - JOIN 2 个表并选择特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47683511/

相关文章:

mysql - 尝试导出 mysql 中的查询结果时出现 fatal error

php - 如果在 select 中指定大写,则 Order by 子句失败

WordPress 分页链接 rel start prev next

php - 停止 WooCommerce 将 wp-login.php 和 wp-admin 重定向到帐户页面

javascript - 使用 CSS 或 Javascript 使多个背景图像可缩放?

java - 应用程序在 Droid X 上崩溃

java - maxinactiveinterval 仅适用于某些 session 属性

java - 简单的java为什么变量不改变?

java - 如何在 Java 中初始化 List<String> 对象?

php - 使用 php 验证多个 mysql 行之间的 true