首页 > 解决方案 > 如何计算 ID 在不同表的列中出现的次数

问题描述

提前道歉:我敢肯定这相对容易,并且被问到令人作呕,但我只是想不出正确的搜索。

基本上,我试图获取从一个表中查询的 ID 列表,然后查看哪些 ID 不会出现在另一个表的单独列中。

这是一个 Wordpress MySQL 数据库。作者通过元数据附加到帖子。作者和帖子都被视为用于数据库目的的帖子。有一张表包含两个帖子/作者:wp_posts/ wp。还有另一个表包含附加到帖子/作者的元数据:wp_postmeta/ wm

我试图通过检查名为inwp_posts的列从中获取作者列表,并查看哪些是孤儿,即未附加到帖子。meta_valuewp_postmeta

通过将作者的 IDwp_posts显示在帖子的wm.meta_value列中,作者与帖子相关联。'author'但是作者本身是通过在同一列中具有值来声明的。因此 ID 为的Author 将具有 in17078'author'wm.meta_value,而归属于该 Author 的 Post 将具有17078in wm.meta_value

通过返回我们数据库中的所有作者,以下查询让我走到了一半:

    SELECT 
        post_title,
        ID
    FROM
        wp_posts wp
    JOIN
        wp_postmeta wm
    ON
        wp.ID = wm.post_id
    WHERE
        wm.meta_value = 'author'

我需要以某种方式获取返回的列表并突出显示哪些 ID 没有显示在wm.meta_value所有帖子的列中。任何建议或指导将不胜感激。

标签: mysqlsqldatabasewordpress

解决方案


你需要以下 -

SELECT ID
FROM wp_postmeta wm
WHERE wm.meta_value = 'author'
AND NOT EXISTS (SELECT 1
                FROM wp_postmeta wm2
                WHERE wm2.ID = wm.ID)

推荐阅读