【问题标题】:Join another table with condition加入另一个有条件的表
【发布时间】:2014-03-12 18:11:30
【问题描述】:

如果当前表中的列等于特定值,我想加入另一个表。 (枚举类型)

例如,假设 status 列有 4 种类型(Public、OnlyMe、Friend、Group)

我想加入表 groups 仅当 status = 组时

类似的东西。

这不是 mysql 语法。

SELECT * FROM posts WHERE ( status = Public OR status = OnlyMe OR status = Friend )
OR ( IF(status=Group) JOIN groups )

如何在 mysql 中做到这一点?

【问题讨论】:

  • 如果 status 是其他内容,您希望发生什么 - 您是否希望这些行的结果中没有行,或者这些行的连接列中没有 NULL 值?
  • 我认为您需要的是LEFT OUTER JOIN。类似SELECT * FROM posts LEFT JOIN groups ON status = group and /*your join condition*/

标签: mysql sql join conditional-statements


【解决方案1】:

类似这样(我为您的表格编了几个列名):

SELECT p.id, p.status, p.text, g.name
FROM posts p
    LEFT OUTER JOIN groups g
        ON (p.status = 'Group' AND p.groupId = g.id);

【讨论】:

  • 所以你不认为'group'是一个字符串? ;-)
  • @Strawberry 我不知道,我没有 OP 的架构。大概他可以自己解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 1970-01-01
相关资源
最近更新 更多