我正在使用WordPress。
我有5个用户的wp_users
表。
在我的wp_usermeta
里面,有5个用户,有3个,有一个meta_key
,叫做age
。
如何获得所有5位用户的年龄值(如果用户没有年龄,则为null),
ID|username|age
1|user1|18
2|user2|18
3|user3|
4|user4|18
5|user5|
重要:我必须使用MySQL查询,不能使用WP函数。
答案 0 :(得分:2)
您需要LEFT JOIN
才能从wp_users
表(左侧表)中获取所有行,而与wp_usermeta
表(右侧表)中的任何匹配行无关。
meta_key
字段在右侧表中;如果您在该字段上指定WHERE
条件,它将有效地成为INNER JOIN
。您需要在ON
子句中指定以下条件:
select u.ID, u.user_email, m.meta_value
from wp_users AS u
left join wp_usermeta AS m
on u.ID = m.user_id
AND m.meta_key= 'user_updated'
此外,在多表查询的情况下,最好使用Aliasing来消除代码的歧义和可读性。
答案 1 :(得分:1)
在这种情况下,您不应使用左连接表中的列作为INNER JOIN。 。您应该将这些条件移至左连接ON子句
select wp_users.ID, wp_users.user_email, wp_usermeta.meta_value
from wp_users
left join wp_usermeta on wp_users.ID=wp_usermeta.user_id
AND wp_usermeta.meta_key= 'user_updated'