【问题标题】:SQL for WP to delete users with multiple meta keys and commentsSQL for WP 删除具有多个元键和评论的用户
【发布时间】:2019-08-04 04:22:05
【问题描述】:

如果用户没有(metakey1 或 metakey2)和(没有 cmets),我需要帮助组合一个可以删除用户的 SQL

我有这个为单个 meta_key 做的 SQL

SELECT *
FROM wp_users LEFT JOIN wp_usermeta
ON wp_users.ID = wp_usermeta.user_id
AND wp_usermeta.meta_key = 'metakey1'
WHERE wp_usermeta.user_id IS NULL

如何扩展上述 SQL 来做到这一点?

【问题讨论】:

    标签: mysql sql wordpress phpmyadmin


    【解决方案1】:

    您可以在on 子句中使用in

    SELECT u.*
    FROM wp_users u LEFT JOIN
         wp_usermeta um
         ON u.ID = um.user_id AND
            um.meta_key IN ('metakey1', 'metakey2', 'comments')
    WHERE um.user_id IS NULL;
    

    只有当 all 元键丢失时,你才会得到匹配项,我认为这就是你所要求的。

    编辑:

    你似乎想要:

    SELECT u.*
    FROM wp_users u
    WHERE NOT EXISTS (SELECT 1
                      FROM wp_usermeta um
                      WHERE u.ID = um.user_id AND
                            um.meta_key IN ('metakey1', 'metakey2')
                     ) AND
          NOT EXISTS (SELECT 1
                      FROM wp_comments c
                      WHERE u.ID = c.user_id
                     );
    

    如果您要对不同的表进行多次比较,我更喜欢NOT EXISTS

    【讨论】:

    • 实际上@Gordon cmets 不是用户元!所以上面的 SQL 是为元键 1 和 2 做的,但是我们如何才能检查用户是否在网站上发表了评论?
    • 所以我们还需要检查 wp_cmets 表中的 comment_author_email 列是否为空
    • @GuruSurfer 。 . .修正您的问题以解决数据的实际情况。
    • 我的问题明确指出我正在尝试删除没有元键 1 和 2 且没有 cmets 的用户。我只能想办法解释一下,所以这里是:一个 SQL 来检查用户是否没有 usermeta metakey1 和 metakey2 以及谁没有在 wp_cmets 中发布 cmets 希望这更清楚,非常感谢这里的支持 :)
    【解决方案2】:

    尝试使用声明两个键之一的存在子句进行删除:

    DELETE
    FROM wp_users wp1
    WHERE NOT EXISTS (SELECT 1 FROM wp_usermeta wp2
                      WHERE wp1.ID = wp2.user_id AND
                            wp2.meta_key IN ('metakey1', 'metakey2'));
    

    请注意,我在上面编写的查询版本中不再需要以下 where 子句:

    WHERE wp_usermeta.user_id IS NULL
    

    不再需要它,因为 NOT EXISTS 现在处理排除连接之前处理的作业。

    【讨论】:

    • @Strawberry 你在开玩笑吗?我确实只拍了两张 Auchentosen,但是...我的意思是来这里...
    • 面部护理。让我失望的是,排除列也是加入中出现的内容。无论如何,我认为我的答案不需要因此而改变。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 2012-08-02
    相关资源
    最近更新 更多