繁体   English   中英

如果使用内连接MySql?

[英]IF using inner join MySql?

如何构建关节以选择任一表

表工作

Id    |    name    |   salary   |   company   |  type
1     |    php     |   17.850   |   5         |  1
2     |    mysql   |   4.500    |   89        |  2
2     |    nodejs  |   7.500    |   89        |  1

表公司

Id    |    name    |   Area     |   status   
1     |    Facebook|   Developer|   1
2     |    Google  |   Manager  |   1

候选表

Id    |    name         |   City     |   phone   
1     |    Alan Kout    |   Nevada   |   1 555 6666
2     |    Wagner Mom   |   L.A.     |   1 444 8965

我的查询 mysql、内连接候选人或公司

If type == 1 in table jobs INNER JOIN ON table company

If type == 2 in table jobs INNER JOIN ON table candidate

例子

SELECT * FROM table_jobs
IF(table_jobs.type == 1, INNER JOIN table_company, INNER JOIN table_candidate)

这个有可能?

使用left joincoalesce()

SELECT tj.*,
       coalesce(co.name, ca.name) as name,
       . . . 
FROM table_jobs tj LEFT JOIN
     table_company co
     ON co.id = tj.id and tj.type = 1 LEFT JOIN
     table_candidate ca
     ON ca.id = tj.id and tj.type = 2;

您可以使用LEFT JOIN而不是INNER JOIN来实现这一点:

SELECT  *
  FROM  table_jobs tj
    LEFT JOIN table_company tco ON tj.type = 1 AND tco.id = tj.id
    LEFT JOIN table_candidate tca ON tj.type = 2 AND tca.id = tj.id

这将连接到类型为 1 的table_company和类型为 2 的table_candidate

然后,您可以根据需要从每个表中SELECT需要的任何列。

如果您希望在一个结果中加入两个连接,您可以使用UNION运算符

SELECT *
FROM table_jobs INNER JOIN table_company
WHERE table_jobs.type=1
UNION
SELECT *
FROM table_jobs INNER JOIN table_candidate
WHERE table_jobs.type=2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM