首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >2列上的SQL distinct

2列上的SQL distinct
EN

Stack Overflow用户
提问于 2017-08-30 08:45:03
回答 3查看 54关注 0票数 0

有没有办法在两列的组合上查询distinct?假设我有下表,其中LinkedIds是来自同一个表的外键,下表将两者链接在一起。我需要的是一种查询表以获得不同条目的方法,以便在查询图1时获得图2中的结果。

我将返回哪一行并不重要,只要我返回一行即可。无论如何,要用纯SQL来实现这一点吗?

图1。

代码语言:javascript
运行
复制
+----+-------------------+-------------------+
| Id | Table1_LinkedId_1 | Table1_LinkedId_2 |
+----+-------------------+-------------------+
|  1 | 15                | 48                |
|  2 | 48                | 15                |
|  3 | 1                 | NULL              |
|  4 | NULL              | 5                 |
|  5 | 12                | 51                |
+----+-------------------+-------------------+

图2。

代码语言:javascript
运行
复制
+----+-------------------+-------------------+
| Id | Table1_LinkedId_1 | Table1_LinkedId_2 |
+----+-------------------+-------------------+
|  1 | 15                | 48                |
|  3 | 1                 | NULL              |
|  4 | NULL              | 5                 |
|  5 | 12                | 51                |
+----+-------------------+-------------------+
EN

Stack Overflow用户

发布于 2017-08-30 09:00:31

您可以创建表的有序版本

代码语言:javascript
运行
复制
select 
  id, 
  case when Table1_LinkedId_1 < Table1_LinkedId_2 then Table1_LinkedId_1 else Table1_LinkedId_2 end link1,
  case when Table1_LinkedId_1 < Table1_LinkedId_2 then Table1_LinkedId_2 else Table1_LinkedId_1 end link2
from links

然后,您可以使用此命令来执行重复数据删除

代码语言:javascript
运行
复制
select 
  min(id) id,
  link1,
  link2
from 
(
      select 
        id, 
        case when Table1_LinkedId_1 < Table1_LinkedId_2 then Table1_LinkedId_1 else Table1_LinkedId_2 end link1,
        case when Table1_LinkedId_1 < Table1_LinkedId_2 then Table1_LinkedId_2 else Table1_LinkedId_1 end link2
      from links
) x
group by link1, link2
票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45950253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档