【问题标题】:MySQL Joining TablesMySQL 连接表
【发布时间】:2011-09-22 20:46:28
【问题描述】:

我必须根据条件加入表格

表:主要

  • 条件字段
  • unique_id
  • 用户名

表:一个

  • unique_id
  • 公司名称

表:b

  • 用户名
  • 公司名称

    如果 main.condition_field = "X" 我需要在 main.unique_id = a.unique_id 上左连接表 a

    否则,如果 main.condition_field = "Y" 我需要在 main.username = b.username 上左加入表 b

到目前为止,我只有这个查询加入了 2 个表 main 和表 a

SELECT main.*, a.* FROM main LEFT JOIN a ON main.unique_id = a.unique_id where main.unique_id='X'

请帮忙


@卢卡斯

非常感谢您,但是我在主表中有另一个字段 [status] 并想在查询中添加条件

WHERE status = 'ACTIVE'

我可以在哪里放置条件子句。

【问题讨论】:

  • 我喜欢SELECT * 模式!

标签: mysql sql join


【解决方案1】:

也许,这就是你可能需要做的:

SELECT main.*, a.* 
FROM main 
LEFT JOIN a ON main.unique_id = a.unique_id 
where main.condition_field='X'

UNION 

SELECT main.*, b.* 
FROM main 
LEFT JOIN b ON main.username = b.username 
where main.condition_field='Y'

【讨论】:

    【解决方案2】:

    在连接的ON 子句中可以有多个条件:

    SELECT
        main.*,
        CASE main_condition
        WHEN 'X' THEN a.companyname
        WHEN 'Y' THEN b.companyname
        ELSE NULL
        END AS companyname
    FROM main
    LEFT JOIN a ON main.condition_field = 'X' AND main.unique_id = a.unique_id
    LEFT JOIN b ON main.condition_field = 'Y' AND main.username = b.username
    WHERE main.status = 'ACTIVE'
    

    【讨论】:

      猜你喜欢
      • 2014-01-06
      • 2011-06-14
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 2021-12-25
      相关资源
      最近更新 更多