如何在含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
相关产品推荐
相关产品推荐

