1
3
好的,以您的具体示例为基础,我提出了一个不同于其他发布的解决方案(尽管我认为我更喜欢您的解决方案)。这是在MS SQL Server 2005上测试的-您的SQL方言可能需要更改。 首先,一些DDL设置阶段:
使用这些表/行作为基础,此select语句检索所需的数据:
|
2
1
下面是一个备用SQL语句:
铌。nvl()是一个Oracle函数。如果第一个参数为空,则返回第二个参数,否则返回第一个参数。您没有说您使用的是哪个数据库,但毫无疑问,在所有数据库中都有等价的数据库。 |
3
0
如果有许多表需要数据,那么必须从中进行选择,这是没有其他方法的。 从您的SQL中,似乎可以从包含表A和表B中的键的表C中获得restuls,因为您正在联合表C上简单select的restuls(其中没有where子句)。在其他任何表中都不存在的一组排他键之后,您在哪里?如果是这样,那么您将需要为表B和表C的selects中的表A的where子句做些什么。 我希望这有道理… |
4
0
下面是我在SQL Server中的方法。此解决方案生成的逻辑IO应比原始IO少。如果表足够大,我将切换到临时表以启用并行性。
这项技术反映了我将如何处理C中的3个列表。通过创建字典。 |
5
0
您的查询看起来不错。 或者,您可以使用下面的查询并在客户端进行筛选。对于数据库服务器来说,压力会更小。
|
6
0
|
7
0
创建所有键的主表,然后左键将此主表联接到三个表,并研究
|
Community wiki · SQL语法新手 1 年前 |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |