[英]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 join
和coalesce()
:
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.