从wp\u usermeta检索结合了两个元键和值的用户的sql查询

34gzjxbg  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(367)

我有一个wordpress网站,用户可以注册为不同语言的教师或学生。
我现在试图通过phpmyadmin搜索所有注册为法语教师的用户,但是我不知道应该使用哪个查询。
注册为教师的用户的meta\u值为 a:1:{s:16:"cliente_profesor";b:1;} 对于meta\u键 wp_capabilities .
如果他/她教法语,她/他就有了 2 对于meta\u键 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多名法语教师。所以我在这个问题上做错了。
提前谢谢你能给我的任何帮助!

but5z9lq

but5z9lq1#

尝试此查询

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_registro 以及 wp_capabilities 不在同一排。有不同的一排。

8fq7wneg

8fq7wneg2#

多亏了布伦特,我在stackexchange找到了一个解决方案。
下面是我要找的代码:

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;}'

我希望这能帮助更多的人!

相关问题