Mysql 使用条件连接表
我有3个表,比如说表1、表2和表3。我必须根据条件将表1与表2或表3连接起来Mysql 使用条件连接表,mysql,sql,Mysql,Sql,我有3个表,比如说表1、表2和表3。我必须根据条件将表1与表2或表3连接起来 |------------|---------------| | id | Name | |------------|---------------| | 1 | facebook | |------------|---------------| | 2 | twitter | |------------|-----------
|------------|---------------|
| 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添加您当前尝试运行的查询。可能存在重复的