【问题标题】:SQL based on result from the same table基于同一张表结果的 SQL
【发布时间】:2020-09-16 20:43:56
【问题描述】:

我有一张如下表:

col1, col2, col3
a,    l1,   v1
a,    l2,   v2
b,    l2,   v3
c,    l3,   v4

我需要 col1 和 col3 的结果如下:

col1, col3
a,    v1
a,    v2
a,    v3
b,    v2
b,    v3
c,    v4

意思是让我(col1 = a 的所有 col3 值)+(属于 col1 = a 的 col2 的 col3 值)
转换为 (v1,v2) + (v3) = v1,v2,v3 的 a。

我正在使用 PostgresDB 来运行它。我尝试了很多方法,但不确定如何有效地获得正确的结果。实际表有大约 100 万条记录。

我该如何解决这个问题?

编辑:对我最初缺乏准确解释表示歉意。基本上我想要得到的是,

col1 和 col3 的值以这样的方式......

  1. 获取 col1 的 col3 的所有值, 例如:对于 col1 = a,我的 col3 值为 v1、v2

加号

  1. col2 的 col3 值,对于 col1 = a 我有 col2 作为 l1,l2 的含义。因此,现在我需要获取 col3 的值,其中 col2 在 l1,l2 中。

我已经编辑了上面的预期结果。

【问题讨论】:

  • 你能通过澄清你的例子吗?我不明白你所说的“(col2的col3值属于col1 = a)”是什么意思。
  • 编辑了我的问题以正确解释问题。

标签: sql postgresql


【解决方案1】:

也许我错过了什么,但我想你只是想要

select distinct b.col1, a.col3
from t a
join t b on a.col2=b.col2

DEMO

【讨论】:

  • 谢谢你 :) 这是我完全错过简单事情的日子之一。
猜你喜欢
  • 2021-09-30
  • 1970-01-01
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多