这是关于Wordpress的网站。
有2张桌子。 1名为wp_users
,1名称为wp_usermeta
这两个表格由wp_users.id = wp_usermeta.user_id
链接
Usermeta有一个名为meta_key
和meta_value
的列。 1个用户有多个meta_key
,但每个meta_key
也有meta_value
。
我想拥有的内容如下:
我想选择ID
,user_login
&来自user_email
的{{1}}和来自wp_users
的{{1}} meta_value
=' foobar' 。但是,查询需要以这样的方式进行:如果有人使用搜索,它仍然会找到相同的但只有wp_usermeta
,meta_key
或user_login
包含搜索的字符串。
这是我现在拥有的。我试过加入这些表格,但我完全不确定如何做到这一点。
user_email
答案 0 :(得分:0)
我宁愿使用联盟,我的经验比一系列或条件更快。
SELECT ID, user_login username, user_email
FROM users
WHERE user_login LIKE '%...%'
UNION DISTINCT
SELECT ID, user_login username, user_email
FROM users
WHERE user_email LIKE '%...%'
UNION DISTINCT
SELECT ID, user_login username, user_email
FROM users
INNER JOIN wp_usermeta ON users.id=wp_usermeta.user_id
WHERE wp_usermeta.meta_key='foobar' and wp_usermeta.meta_value LIKE '%...%'
或者,您可以在连接字符串上将3个字段连接成一个字段等:
SELECT ID, user_login username, user_email
FROM users
LEFT JOIN wp_usermeta ON users.id=wp_usermeta.user_id
AND wp_usermeta.meta_key='foobar'
WHERE concat_ws(',',user_login, user_email, coalesce(wp_usermeta.meta_value,'') LIKE '%...%'