【问题标题】:JOIN 2 tables and select specific rows加入 2 个表并选择特定行
【发布时间】:2018-05-20 21:05:14
【问题描述】:

我使用 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?

截图:

【问题讨论】:

    标签: java mysql wordpress javafx


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多