MySQL中的Case语句连接

4

我在查询时遇到了一些问题。如果符合条件,我想要联接表格。这是我正在使用的查询语句。由于对这些情况语句不太熟悉,所以非常感谢任何帮助!

      SELECT 
        conversation.c_id,
        conversation.user_one,
        conversation.user_two,
        users.name,
        users.lastName
      FROM `conversation` 

      CASE
        WHEN conversation.user_one = 1
        THEN
          INNER JOIN `users`
          ON conversation.two = users.id

        WHEN conversation.user_two = 1
        THEN
          INNER JOIN `users`
          ON conversation.user_one = users.id
      END CASE

      WHERE `user_one` = 1 OR `user_two` = 1

2
将你的 CASE 放到 ON 子句内部。 - PM 77-1
1
刚试了一下,还是不行 :/。 - Brian Moreno
不,我认为你不能像你尝试的那样在那里使用CASE语句。你可能需要查看动态查询。 - Rahul
我会避免使用动态方式...他可以在选择语句中使用一对左连接和条件语句来完成,但我认为动态方式无法满足他的需求。 - Twelfth
请在你的问题中详细描述你所尝试的内容。 - PM 77-1
1
是的,我现在明白你在Twelfth的帖子中所说的了。现在它可以工作了。感谢你的帮助! - Brian Moreno
1个回答

10
不要在整个内连接上使用case语句,只在连接的'on'子句上使用case语句。这应该可以解决问题(除非我有拼写错误):
  SELECT 
    conversation.c_id,
    conversation.user_one,
    conversation.user_two,
    users.name,
    users.lastName
  FROM `conversation` 
  INNER JOIN `users`
  on
  users.id =
  CASE
    WHEN conversation.user_one = 1
    THEN conversation.two 
    WHEN conversation.user_two = 1
    THEN conversation.user_one   
 END
 WHERE `user_one` = 1 OR `user_two` = 1

你还可以通过在每个条件上进行左连接,然后在选择语句中使用case语句来确定从哪个表中显示记录,从而实现类似的效果。

不同的表格怎么办? - TheRealChx101

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接