Mysql 使用条件连接表

Mysql 使用条件连接表,mysql,sql,Mysql,Sql,我有3个表,比如说表1、表2和表3。我必须根据条件将表1与表2或表3连接起来 |------------|---------------| | id | Name | |------------|---------------| | 1 | facebook | |------------|---------------| | 2 | twitter | |------------|-----------

我有3个表,比如说表1、表2和表3。我必须根据条件将表1与表2或表3连接起来

|------------|---------------|
|      id    |  Name         |
|------------|---------------|
|      1     |  facebook     |
|------------|---------------|
|      2     |  twitter      |
|------------|---------------|

|------------|---------------|-------------|
|      id    |  tab1_id      |   value     |
|------------|---------------|-------------|
|      1     |  1            |    val1     |
|------------|---------------|-------------|
|      2     |  2            |    val3     |
|------------|---------------|-------------|


|------------|---------------|-------------|
|      id    |  tab1_id      |   value     |
|------------|---------------|-------------|
|      1     |  1            |    val5     |
|------------|---------------|-------------|
|      2     |  2            |    val6     |
|------------|---------------|-------------|
DDL:

这里我需要一个连接,如果我的第一个表
'Name'
facebook
表1应该与
Table2
连接,如果我的第一个表
Name
Twitter
表1应该与
Table3
我试着在下面提问

SELECT tab1.*
from Table1 as tab1
case 
        when tab1.name='facebook' then left join Table2 on {condition} 
        when tab1.name='twitter' then left join Table3 on {condition}
请尝试以下查询:

with dt
(select *, namekey='facebook' from table2
union 
select *, namekey='twitter' from table3)

select * from table1
inner join dt on table1.Name=dt.namekey
select *,
       case when name = 'facebook' then
         (select value from tbl2 where tab1_id = t1.id)
       else
         (select value from tbl3 where tab1_id = t1.id)
       end value
from tbl1 t1;
你能试试上面的查询吗,我测试了这个查询

尝试此查询:

with dt
(select *, namekey='facebook' from table2
union 
select *, namekey='twitter' from table3)

select * from table1
inner join dt on table1.Name=dt.namekey
select *,
       case when name = 'facebook' then
         (select value from tbl2 where tab1_id = t1.id)
       else
         (select value from tbl3 where tab1_id = t1.id)
       end value
from tbl1 t1;

显示您的查询,您在尝试什么?我正在尝试case when语句…但其显示错误…我使用。。。当tab1.name='facebook'然后离开join时的情况表2当tab1.name='twitter'然后离开join时的情况Table3@SandeepNambiar添加您当前尝试运行的查询。可能存在重复的