sql条件连接

发布于 2024-10-19 17:29:52 字数 521 浏览 3 评论 0原文

我有 3 个表:

table1:table1_col1, table1_col2,table1_col3
table2 : table1_col1, table2_col2,table2_col3
table3 : table1_col1, table3_col2,table3_col3

正如我试图通过命名来解释的那样, table1:table1_col1 是一个唯一键,可以引用 table2 : table1_col1 或 table3 : table1_col1 但不能同时引用两者。 我需要在 table1、table2、table3 之间进行联接,这样:

join table1 with table2 if table1:table1_col1 = table2 : table1_col1
join table1 with table3 if table1:table1_col1  = table3 : table1_col1

这在 sql 语法中可能吗?
谢谢。

I have 3 tables:

table1:table1_col1, table1_col2,table1_col3
table2 : table1_col1, table2_col2,table2_col3
table3 : table1_col1, table3_col2,table3_col3

As I tried to explain by the naming, table1:table1_col1 is a unique key that can reference either table2 : table1_col1 or table3 : table1_col1 but never both.
I need to make a join between table1, table2,table3 such that:

join table1 with table2 if table1:table1_col1 = table2 : table1_col1
join table1 with table3 if table1:table1_col1  = table3 : table1_col1

Is this possible in sql syntax?
Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

十年九夏 2024-10-26 17:29:52

我假设您也需要表 2 和表 3 中的相应列。

select 
      t1.table_col1,
      t2.table2_col2,
      t2.table2_col3,
      t3.table3_col2,
      t3.table3_col3
   from
      table1 t1
         left join table2 t2
           on t1.table1_col1 = t2.table1_col1
         left join table3 t3
           on t1.table1_col1 = t3.table1_col1

此外,如果您只需要相应表 2 或表 3 中的列,并且它们具有相同的数据类型,则可以使用 NVL() 函数,例如

select 
      t1.table_col1,
      nvl( t2.table2_col2, t3.table3_col2 ) as SecondCol,
      nvl( t2.table2_col3, t3.table3_col3 ) as ThirdCol
   from
      table1 t1
         left join table2 t2
           on t1.table1_col1 = t2.table1_col1
         left join table3 t3
           on t1.table1_col1 = t3.table1_col1

I would assume you want the corresponding columns from table's 2 and 3 too.

select 
      t1.table_col1,
      t2.table2_col2,
      t2.table2_col3,
      t3.table3_col2,
      t3.table3_col3
   from
      table1 t1
         left join table2 t2
           on t1.table1_col1 = t2.table1_col1
         left join table3 t3
           on t1.table1_col1 = t3.table1_col1

Additionally, if you only wanted the columns from respective table 2 or 3, and they were the same data types, you could use the NVL() function, such as

select 
      t1.table_col1,
      nvl( t2.table2_col2, t3.table3_col2 ) as SecondCol,
      nvl( t2.table2_col3, t3.table3_col3 ) as ThirdCol
   from
      table1 t1
         left join table2 t2
           on t1.table1_col1 = t2.table1_col1
         left join table3 t3
           on t1.table1_col1 = t3.table1_col1
九公里浅绿 2024-10-26 17:29:52

您可以使用 LFET JOIN

FROM table1 
LEFT JOIN table2 ON table1.table1_col1 = table2.table1_col1
LEFT JOIN table3 ON table1.table1_col1  = table3.table1_col1

You can use a LFET JOIN:

FROM table1 
LEFT JOIN table2 ON table1.table1_col1 = table2.table1_col1
LEFT JOIN table3 ON table1.table1_col1  = table3.table1_col1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文