Mysql SQL组合具有相同通配符值的记录

Mysql SQL组合具有相同通配符值的记录,mysql,sql,wordpress,Mysql,Sql,Wordpress,我有一个MySQL Wordpress数据库,我正在处理Posteta表,它的结构不是很好。它有四列:“meta_id、post_id、meta_key、meta_value”。这是我正在处理的查询: SELECT DISTINCT * FROM wp_10_postmeta as pm JOIN wp_10_posts AS p ON pm.post_id = p.ID WHERE (meta_key LIKE 'personnel_%_la

我有一个MySQL Wordpress数据库,我正在处理Posteta表,它的结构不是很好。它有四列:“meta_id、post_id、meta_key、meta_value”。这是我正在处理的查询:

SELECT  DISTINCT * 
        FROM wp_10_postmeta as pm
        JOIN wp_10_posts AS p ON pm.post_id = p.ID
        WHERE (meta_key LIKE 'personnel_%_last_name' OR
                meta_key LIKE 'personnel_%_first_name' OR
                meta_key LIKE 'personnel_%_title' OR
                meta_key LIKE 'personnel_%_alias' OR
                meta_key LIKE 'webpages_%_title' OR
                meta_key LIKE 'webpages_%_alias' OR
                meta_key LIKE 'departments_%_name' OR
                meta_key LIKE 'departments_%_alias')
            AND post_status = 'publish' AND meta_value LIKE '%john%' AND meta_value LIKE '%smith%'

问题:如果搜索“john”或“Smith”,此查询非常有效,但如果搜索“john Smith”,则返回空。有没有办法将“人员姓名”和“人员姓名”结合起来进行比较

我猜您希望在多个字段中查找匹配项。为此,请尝试使用
分组方式

    SELECT p.*
    FROM wp_10_postmeta as pm JOIN
         wp_10_posts AS p
         ON pm.post_id = p.ID
    WHERE (meta_key LIKE 'personnel_%_last_name' OR
            meta_key LIKE 'personnel_%_first_name' OR
            meta_key LIKE 'personnel_%_title' OR
            meta_key LIKE 'personnel_%_alias' OR
            meta_key LIKE 'webpages_%_title' OR
            meta_key LIKE 'webpages_%_alias' OR
            meta_key LIKE 'departments_%_name' OR
            meta_key LIKE 'departments_%_alias')
        AND p.post_status = 'publish'
    GROUP BY p.id
    HAVING SUM(meta_value LIKE '%john%') > 0 AND SUM(meta_value LIKE '%smith%') > 0;

meta_value col中有哪些值?它是员工和部门的目录,所以几乎只是字符串。谢谢您的帮助。我尝试使用group by方法,但是我得到了奇怪的结果,例如搜索%michael%和%humphries%,在我的目录中返回一个名为“Nancy”的结果。这是我的SQL,我的php代码正在运行:我注意到返回的总是0,比如:personal\u 0\u first\u name。例如,这里有一个搜索:如果您希望匹配的是一个特定的元键,那么您需要在
中包含该键,并具有
条件:
sum(元值,如'%join%'和元键,如'personals%\u first\u name')
。嗯,不确定您的意思。我运行了此SQL并得到以下结果: