我使用 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?
最佳答案
由于您想根据 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/