mysql 使用CASE和END联接查询中的另一个表[已关闭]

px9o7tmv  于 2022-10-31  发布在  Mysql
关注(0)|答案(1)|浏览(134)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
4天前关闭。
Improve this question
我正在尝试根据下面查询中的用户ID连接用户表中的行。但是我不知道如何访问用户ID值。现在我正在接收行:userID:[number]。基于此userID,我想从表users添加列,这样我将收到:userID:[编号]、firstName(来自用户表)、lastName(来自用户表)等。总结一下:我想根据下面的查询结果连接用户表中的数据。

SELECT DISTINCT 
    CASE 
        WHEN user1_id = ? 
        THEN user2_id 
        ELSE user1_id 
    END userID 
FROM conversations 
WHERE ? IN (user2_id,user1_id)
hfyxw5xn

hfyxw5xn1#

在连接条件中使用case表达式:

FROM conversations 
    INNER JOIN users on CASE  WHEN user1_id = ? THEN user2_id ELSE user1_id END = users.id`  b

话虽如此,考虑到你的整体逻辑,我认为这将是相同的更简单

FROM conversations
    INNER JOIN users ON users.id = ?

这感觉很奇怪,但结果是一样的
您也可以使用子查询来解决:

SELECT *
FROM ( SELECT 
         CASE 
           WHEN user1_id = ? 
           THEN user2_id 
           ELSE user1_id 
           END userID 
         FROM conversations 
         WHERE ? IN (user2_id,user1_id)
      ) dt
      INNER JOIN users on dt.userID = users.id

我怀疑这会给予你与上面的查询相同的结果。

相关问题