【发布时间】:2021-06-20 13:37:33
【问题描述】:
我在一个数据库中有两个表
表 1
| T1ID | T1Value |
|---|---|
| 1 | T1V1 |
| 2 | T1V2 |
| 3 | T1V3 |
| 4 | T1V4 |
表 2
| T2ID | T1FK | T2Value |
|---|---|---|
| 1 | 2 | T2V1 |
| 2 | 3 | T2V2 |
请注意,Table2 有一个外键,它引用 Table1 中的 T1ID。另请注意,并非 Table1 中的所有条目在 Table2 中都有对应的条目。
现在,我想使用 SINGLE SQL 语句来执行以下两个操作
-
如果Table2中有与Table1相关的对应条目,则运行以下语句
SELECT t1.*, t2.T2Value FROM Table1 AS t1 INNER JOIN Table2 AS t2 ON t1.T1ID = t2.T1FK WHERE t1.T1ID = 2 -
如果 Table2 中没有与 Table1 相关的任何对应条目,则运行以下语句(注意返回
NULL而不是t2.T2Value)SELECT t1.*, NULL FROM Table1 AS t1 WHERE t1.T1ID = 4
(请注意,t1.T1ID 是程序提供的,所以这个值会改变。我只是向你展示我需要的东西)
如何将以上两个语句合并为一个语句?
谢谢。
【问题讨论】:
-
如果 Table2 中没有与 Table1 相关的任何对应条目,您的意思是 t1.T1ID = 2 还是 Table2 中没有引用任何 T1ID 的 T1FK 行?
-
@forpas 既然你提到了,我也想知道。
-
@forpas - 我的意思是 Table2 中没有 T1FK 引用任何 T1ID 的行