You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在含CASE语句的查询结果中关联users表获取用户信息?

解决方案

你可以通过两种方式关联users表获取用户信息:

方法一:子查询关联

把原查询的结果作为子查询,和users表通过userID关联:

SELECT 
    sub.userID,
    u.firstName,
    u.lastName
    -- 可按需添加users表的其他字段
FROM (
    SELECT DISTINCT 
        CASE 
            WHEN user1_id = ? 
            THEN user2_id 
            ELSE user1_id 
        END userID 
    FROM conversations 
    WHERE ? IN (user2_id,user1_id)
) AS sub
JOIN users u ON sub.userID = u.userID;

方法二:直接JOIN关联

也可以直接在原查询基础上JOINusers表,省去子查询:

SELECT DISTINCT 
    CASE 
        WHEN user1_id = ? 
        THEN user2_id 
        ELSE user1_id 
    END userID,
    u.firstName,
    u.lastName
    -- 可按需添加users表的其他字段
FROM conversations c
JOIN users u ON u.userID = CASE 
                            WHEN c.user1_id = ? 
                            THEN c.user2_id 
                            ELSE c.user1_id 
                          END
WHERE ? IN (c.user2_id,c.user1_id);

注意事项

  • 确保users表的主键字段是userID,如果实际字段名不同(比如id),需替换为对应名称。
  • 三个?位置要传入同一个用户ID参数,避免参数不一致导致结果错误。

内容的提问来源于stack exchange,提问作者MySQLNewbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:20:35