Mysql SQL组合具有相同通配符值的记录
我有一个MySQL Wordpress数据库,我正在处理Posteta表,它的结构不是很好。它有四列:“meta_id、post_id、meta_key、meta_value”。这是我正在处理的查询: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
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并得到以下结果: