sql - 如何将一个表上的 3 列与另一表中的 1 列连接起来?
问题描述
我有一个Table1
包含 5 列的表 ( ),每个结果显示一个时区 ( TZID
) 的 ID。在单独的表 ( Table2
) 中是这些 ID 的列表,以及它们的相应名称。我需要加入它们,以便为每个列结果显示它们的相应名称。但我似乎只能弄清楚如何加入 1 列的结果。例如:
表 1 与表 2 连接
在这里,我加入Column3
了TZID
from table 2
。但是如果Column3
等于零,Column 1
或者2
不是,我需要TZID
fromtable2
返回对应name
的 from Table2
。
目前我有以下内容:
SELECT
Column1
,Column2
,Column3
,Table2.TZID as 'TZID from Table2'
,Table2.[DESCRIPT] as 'Name from Table2'
FROM Table1
left outer join Table2 on Table2.TZID=Table1.Column3
我尝试过使用 REPLACE,是否可以用另一个表的结果替换?就像是
REPLACE(Column1, Table2.TZID, Table2.[DESCRIPT]) AS 'Column1 Mask'
有没有办法真正做到这一点?
解决方案
我想你想加入优先级,如果不是 0,首先加入 Column3。如果 Column3 是 0,然后加入 Column1。如果第 1 列也是 0,那么加入 Column2,对吗?
如果这是正确的,那么你需要一个这样的 sql 查询:
SELECT
Column1
,Column2
,Column3
,Table2.TZID as 'TZID from Table2'
,Table2.NAME as 'Name from Table2'
FROM Table1
LEFT OUTER join Table2 on Table2.TZID =
CASE
WHEN Table1.Column3 <> 0
THEN Table1.Column3
WHEN Table1.Column1 <> 0
THEN Table1.Column1
WHEN Table1.Column2 <> 0
THEN Table1.Column2
END
推荐阅读
- audio - DevOps 构建管道概述和失败时的声音触发
- javascript - 在 html 中更改 id 的值,然后将其更改回来
- php - Laravel 根据数据透视表从表中获取标题
- hashtable - TLB 与哈希表有何不同?
- spring - 重置生成 jwt 令牌并更新 spring 安全上下文
- mysql - 不允许 LOAD DATA LOCAL INFILE
- arrays - 这是预期的 Delphi 动态数组行为吗
- java - SLF4J - 基于标签记录到不同的文件
- image - 带有光标图标的 Puppeteer 屏幕截图
- angular - 无法使用任何模拟框架在 Angular 游乐场模拟 ngrx 商店