【问题标题】:Merging two SQL SELECT statements合并两个 SQL SELECT 语句
【发布时间】:2010-11-24 22:15:03
【问题描述】:

我需要合并两个 SELECT 语句。

我的数据库中有两个表,其中表 A 由两个字段组成;类型和计数器。表 B 由两个字段组成;来源和目的地。

表A有三个项目; { 1, 5000 }、{ 2, 10000 } 和 { 3, 15000 }。 ({类型,计数器}) 表 B 有两个项目; { 5000, 10000 } 和 { 10000, 150000 }。 ({来源,目的地})

也就是说,表 B 的值由表 A 中的数据组成。

我可用于查询的数据是表 A 中的类型(1、2 和 3)。

对数据库的查询(我正在查询的那个)的最终结果应该是一项; { 5000, 10000, 15000 },其中列应分别为 {Source, Middle, Destination}。但是,我无法创建可以以这种格式显示的查询。

我可以使用 INNER JOIN 获取数据,其中结果显示为两个项目; { 5000, 10000 } 和 { 10000, 15000 }。 (不仅仅是表 B 的内容,也就是说,如果这些表还包含其他项目。)

(两个表中的项目显然比我上面显示的要多得多。)

那么,如何编写 SQL 查询以使我的结果显示为 { 5000, 10000, 15000 }(具有适当的列名)?

【问题讨论】:

  • 你能贴出你试过的select语句吗?
  • 只有中间吗?或者你的“路径”可以去 5000 -> 10000 -> 15000 -> 20000 -> 25000?在这种情况下,您的列会是什么样子?
  • 中间有一个。以下是我的(不正确的选择); SELECT * FROM TableB INNER JOIN TableA TD1 ON TableB.SourceType = TB1.Type INNER JOIN TableA TD2 ON TableB.DestinationType = TD2.Type INNER JOIN TableA TD3 ON TableB.DestinationType = TD3.Type INNER JOIN TableA TD4 ON TableB.DestinationType = TD4 .Type WHERE TD1.Counter=5000 AND TD2.Counter=10000 OR TD1.Counter=10000 AND TD3.counter = 15000
  • 我认为您需要更具体地了解您要查找的内容。我不明白你真正想要达到的目标。你显然不只是想加入表格。您是否要检索最低的来源、最高的目的地和中间的值?
  • 值可以是任何值,只是每个数字都是唯一的。

标签: sql select merge


【解决方案1】:

根据您的问题,您对表 A 没有任何用途或需要 - 您只是在 Source = Destination 上将表 B 加入到自身。

你的查询应该是

SELECT a.Source, a.Destination, b.Destination
FROM [Table B] as a INNER JOIN [Table B] as b
ON a.Destination = b.Source

【讨论】:

  • 似乎已经做到了。谢谢。我想我是瞎了眼,我需要任何意见,但显然不需要。
  • 我发布了一个正确的答案,你为什么拒绝它?我在看到你之前就发布了它,我更喜欢我的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
  • 2014-10-30
  • 2017-07-14
  • 2011-02-19
  • 2015-08-30
  • 1970-01-01
相关资源
最近更新 更多