sql查询在连接表中只获得1个值

时间:2016-05-10 10:48:26

标签: php mysql sql wordpress join

这是关于Wordpress的网站。

有2张桌子。 1名为wp_users,1名称为wp_usermeta 这两个表格由wp_users.id = wp_usermeta.user_id链接 Usermeta有一个名为meta_keymeta_value的列。 1个用户有多个meta_key,但每个meta_key也有meta_value

我想拥有的内容如下:

我想选择IDuser_login&来自user_email的{​​{1}}和来自wp_users的{​​{1}} meta_value =' foobar' 。但是,查询需要以这样的方式进行:如果有人使用搜索,它仍然会找到相同的但只有wp_usermetameta_keyuser_login包含搜索的字符串。

这是我现在拥有的。我试过加入这些表格,但我完全不确定如何做到这一点。

user_email

1 个答案:

答案 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 '%...%'