无法让我的 SQL Select 语句与 CASE 一起使用

问题描述 投票:0回答:1

这里是 SQL 菜鸟。从 WP 安装中的自定义表中提取一些数据,我想从 user_meta 和 users 表中获取用户信息。

生成的数组应如下所示。

array(
 user_id => 1234,
 user_email => [email protected]
 first_name => foo
 last_name => bar
)

我就是无法正确表达我的 CASE 陈述。

$query = $wpdb->prepare(
    "SELECT s.user_id, u.user_email         
    FROM wp_user_stages s 
    INNER JOIN wp_users u ON s.user_id=u.ID 
    INNER JOIN wp_usermeta m ON s.user_id=m.user_id
    CASE 
        WHEN m.met_key = 'first_name' THEN m.meta_value AS first_name
        WHEN m.met_key = 'last_name' THEN m.meta_value AS last_name
    END
    WHERE 
        s.quest_comp = 0 AND
        s.registered = %s           
    ",
    '2024-05-11'    
    );
$users = $wpdb->get_results($query, ARRAY_A);

我查看了各种手册并尝试了不同格式和不同位置的案例陈述。我以前用过它,但很久以前我只是不记得了。

mysql wordpress
1个回答
1
投票

将 sql 脚本更改为:

SELECT s.user_id, u.user_email,
    CASE 
        WHEN m.met_key = 'first_name' THEN m.meta_value
        ELSE ''
    END  AS first_name,
    CASE 
        WHEN m.met_key = 'last_name' THEN m.meta_value
        ELSE ''
    END  AS last_name      
    FROM wp_user_stages s 
    INNER JOIN wp_users u ON s.user_id=u.ID 
    INNER JOIN wp_usermeta m ON s.user_id=m.user_id
    WHERE 
        s.quest_comp = 0 AND
        s.registered = %s 
© www.soinside.com 2019 - 2024. All rights reserved.