加入2个表并选择特定行

时间:2017-12-06 21:11:14

标签: 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

1 个答案:

答案 0 :(得分:1)

由于您希望根据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