用于检索组合来自wp_usermeta的两个元键和值的用户的SQL查询

时间:2018-04-12 12:32:55

标签: mysql sql database wordpress

我有一个Wordpress网站,用户可以注册为不同语言的教师或学生。

我现在正试图通过phpMyAdmin搜索所有注册为法语老师的用户,但我无法确定应该使用哪个查询。

注册为教师的用户对meta_key a:1:{s:16:"cliente_profesor";b:1;}的meta_value为wp_capabilities

如果他/她教法语,她/他对meta_key 2的meta_value为idioma_registro

所以这就是我尝试在查询中组合这些信息的方式:

SELECT `user_id` FROM `wp_usermeta` WHERE (`meta_key` LIKE 'idioma_registro' AND `meta_value` LIKE '2') AND (`meta_key` LIKE 'wp_capabilities' AND `meta_value` LIKE 'a:1:{s:16:"cliente_profesor";b:1;}');

运行查询时的结果为“0”,但我知道网站上有超过20000名法国教师注册。所以我对这个查询做错了。

提前感谢您提供给我的任何帮助!

2 个答案:

答案 0 :(得分:2)

我在Stackexchange thanks to Brent找到了一个解决方案。

以下是我要找的代码:

SELECT u.ID, u.display_name
FROM wp_users AS u
LEFT JOIN wp_usermeta AS um1 ON u.ID = um1.user_id
LEFT JOIN wp_usermeta AS um2 ON u.ID = um2.user_id
WHERE  um1.meta_key = 'idioma_registro' AND um1.meta_value = '2'
AND um2.meta_key = 'wp_capabilities' AND um2.meta_value = 'a:1:{s:16:"cliente_profesor";b:1;}'

我希望这可以帮助更多人!

答案 1 :(得分:0)

尝试此查询

SELECT `user_id` FROM `wp_usermeta` WHERE (`meta_key` LIKE 'idioma_registro' AND `meta_value` LIKE '2') 
OR (`meta_key` LIKE 'wp_capabilities' AND `meta_value` LIKE 'a:1:{s:16:"cliente_profesor";b:1;}')

注意:您无法使用AND查询,因为idioma_registrowp_capabilities不在同一行。有不同的行。