当前位置: 首页 > 面试题库 >

SQL Full Out Join在同一表的同一列上

岑明辉
2023-03-14
问题内容

这可能是更多的设计问题,但是我希望没有太多的伏都教徒是有可能的。

假设我有一个像这样的表:

SELECT * FROM stuff;

 id   grp
  1     a
  2     a
  3     a
  1     b
  2     b
  4     b

我想得到这样的东西(ID在列中分组):

a.id    b.id
   1       1
   2       2
   3    null
null       4

这可能吗?我已经尝试过以下查询…

SELECT a.id, b.id FROM stuff a
FULL OUTER JOIN stuff b ON a.id = b.id
WHERE a.grp = 'a' AND b.grp = 'b';

…但是我只得到公共节点:

a.id    b.id
   1       1
   2       2

我也尝试过在JOIN ON和WHERE上玩,但是似乎无法获得预期的结果。

我在网上可以找到的最接近的问题是这个,但我也无法使UNION正常工作。

性能不是问题,我可以假设只有2个小组。

有任何想法吗?


问题答案:

您首先做错了事,然后尝试对其进行修复。那是行不通的。

您想加入的事物是select * from stuff where grp = 'a'select * from stuff where grp = 'b'。因此,加入这些:

select a.ID as a, b.ID as b from
  (select * from stuff where grp = 'a') a
full join
  (select * from stuff where grp = 'b') b
on b.id = a.id

SQL小提琴



 类似资料:
  • 我想运行一个mysql查询,从一个表中选择所有行,,其中列的值在另一列()的所有值中的任何位置都不存在。 以下是我的表格的简化版本,其中包含以下内容: 我的问题是: 在本例中,我希望选择标题为和的行,但我的查询没有返回任何行。 以下是表格结构:

  • 问题内容: 我有一个带有2个索引的PostgreSQL表。索引之一是涵盖和列,并且是唯一的B树索引。第二索引仅覆盖该列,并且是非唯一索引。 如果第一个索引存在,那么第二个索引是否冗余?换句话说,拥有第二个索引会没有好处吗? 问题答案: postgres多列索引只能用于搜索第一列,因此在实践中是多余的。 可以将多列B树索引用于涉及该索引列的任何子集的查询条件,但是当前导(最左边)列受到约束时,该索引

  • 如何在同一表中从一列插入值到另一列? 说我有: 我要求: 换句话说,我想复制'Suburb2'和'Date',并将它们分别作为新行插入'Date'和'suburban'。 我知道我可以通过首先复制到临时列/s并稍后清理来实现这一点,但我想知道是否有一种方法可以在一个查询中实现这一点? 我试过了 但得到的列“日期”不存在错误。

  • 我使用嵌套的Select语句从表1中获得单行结果,我需要在同一行的末尾追加表3中的另一列(COLX)。我试过联合,但结果是两行。有什么建议吗? table2.colz和table3.colx是用来匹配条目的ID。这两个最终结果都符合要求。 编辑(进一步解释我的表结构) COLX是表3的ID,以匹配表2中的COLZ 表2 ID中的COL1与表1中的COL1匹配 结果我需要的是表1.col1,表1.c

  • 问题内容: 我是Oracle的新手。我有一个Oracle表有三列:,和。在第三列中的行具有值,或 。 我想使用count运行查询,以显示可维修的数量,正在维修的数量,针对每个项目类别的谴责数量。 我想运行类似的东西: 我无法在计数内运行内部查询。 这是我希望结果集看起来像的样子: 问题答案: 您可以在COUNT函数中使用CASE或DECODE语句。 输出:

  • 问题内容: 我有一个班级用户。用户可以与许多其他用户成为朋友。这种关系是相互的。如果A是B的朋友,那么B是A的朋友。我也希望每个关系都存储其他数据,例如两个用户成为朋友的日期。因此,这是同一表上具有多列的多对多关系。我知道应该创建一个中产阶级友谊(包含两个用户ID和日期列)。但是我在将其与Hibernate映射时做得不够。使我停滞不前的是映射到了同一张表。如果多对多关系是在两个不同的表之间,则可以