gpt4 book ai didi

mysql - 加入有条件的表

转载 作者:可可西里 更新时间:2023-11-01 08:02:20 27 4
gpt4 key购买 nike

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

|------------|---------------|
| 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 |
|------------|---------------|-------------|

数据链接:

create table tbl1 (id int,  Name varchar(10));
insert into tbl1 values
(1,'facebook'),
(2,'twitter');

create table tbl2 (id int,tab1_id int, value varchar(10));
insert into tbl2 values
(1,1,'val1'),
(2,2,'val3');

create table tbl3 (id int,tab1_id int, value varchar(10));
insert into tbl3 values
(1,1 ,'val5'),
(2,2 ,'val6');

这里我需要一个连接,如果我的第一个表 '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}

最佳答案

SELECT `T1`.`Name`, 
(CASE WHEN (`T1`.`Name` = 'facebook') THEN `T2`.`value`
WHEN (`T1`.`Name` = 'twitter') THEN `T3`.`value` END) AS tab3_value
FROM table1 T1
LEFT JOIN table2 T2 ON (`T2`.`tab1_id` = `T1`.`id` AND `T1`.`Name` = 'facebook')
LEFT JOIN table3 T3 ON (`T3`.`tab1_id` = `T1`.`id` AND `T1`.`Name` = 'twitter') ;

你能试试上面的查询吗,我测试了这个查询。

Here is a Demo

关于mysql - 加入有条件的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51719132/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com