SQL-查询用户和用户元数据的更快捷方式

时间:2019-07-10 作者:user1061001

我希望将一组用户和用户元数据查询到一个表中。我可以通过创建多个临时表和一个数据透视来做到这一点:

    create temporary table meta

    select u.ID, u.user_login, meta_key, meta_value from wp_users u
    inner join wp_usermeta m on m.user_id = u.ID;


    create temporary table users

    select ID, user_login,
        MAX(CASE WHEN meta_key = \'first_name\' THEN meta_value END) as first_name,
        MAX(CASE WHEN meta_key = \'middle_name\' THEN meta_value END) as middle_name,
        MAX(CASE WHEN meta_key = \'last_name\' THEN meta_value END) as last_name,
        MAX(CASE WHEN meta_key = \'university_program\' THEN meta_value END) as university_program, 
        MAX(CASE WHEN meta_key = \'wp_capabilities\' THEN meta_value END) as wp_capabilities 
    from meta
    group by ID, user_login;

    drop temporary table meta; 

    select * from users 
    where wp_capabilities like \'%um_student%\';

    drop temporary table users;  
但是,是否有更好、更短的方法来运行此查询,而无需创建临时表或透视?

1 个回复
SO网友:user1061001

我刚刚尝试了wp\\u get\\u users()函数,我认为这是一种更干净的方法,可以在表中获取用户数据。我可以这样做:

$users = get_users(\'role=um_student\');

        foreach ( $users as $user )
        {
            echo "<tr>";
                echo "<td>$user->ID</td>";
                echo "<td>$user->user_login</td>";
                echo "<td>$user->first_name</td>";
                echo "<td>$user->middle_name</td>";
                echo "<td>$user->last_name</td>";
                echo "<td>$user->university_program</td>";
                echo "</tr>";
        }

相关推荐

SQL Query:如何通过SQL Query将POST的所有标签复制到WordPress中的POST内容中

我想将帖子的所有标签复制/移动到帖子内容中,以文本形式而不是链接形式。例如:帖子有:标题字段中的标题,内容字段中的某些内容(如:男孩天性善良),三个标签(如:x1、x2、x3)我们是否可以将该帖子的所有标签复制到其内容字段中,例如:帖子有:标题字段中的标题,内容字段中的某些内容(如:男孩天性善良x1 x2 x3),三个标签(如:x1、x2、x3)以文本形式,而不是链接形式。