首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获取多个列的不同值,且两个不同字段中的任意一个具有相同的反向数据

如何获取多个列的不同值,且两个不同字段中的任意一个具有相同的反向数据
EN

Stack Overflow用户
提问于 2019-05-30 18:03:33
回答 2查看 25关注 0票数 0

我有一个包含3列的表,分别名为msg、sender和receiver。现在我需要得到不同的发送者和接收者。但是在这里,如果我有发送者a和接收者b,或者发送者b和接收者a,这两个都显示了。但我只想要最后一个。

代码语言:javascript
运行
复制
msg | sender | receiver
hi  | 1      | 5
he  | 2      | 6
jh  | 5      |1

SELECT DSTINCT `sender`, `receiver` from `table`

它给了我这样的结果

代码语言:javascript
运行
复制
1-5
2-6
5-1

但我需要

代码语言:javascript
运行
复制
5-1
2-6

有没有什么sql查询可以解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-30 18:07:38

当然,让我们利用你是整数的事实,并且总是把小的放在第一列,把大的放在右边的列

代码语言:javascript
运行
复制
SELECT DISTINCT
  CASE WHEN sender < receiver THEN sender ELSE receiver END as PartyA,
  CASE WHEN sender < receiver THEN receiver ELSE sender END as PartyB
from `table`

它不会精确地产生5-1 (它会产生1-5),但我认为你并不是真的关心,你只是想要有过交谈的人的唯一列表,以及5-1 == 1-5

票数 0
EN

Stack Overflow用户

发布于 2019-05-30 18:24:06

也可以使用least()greatest()函数执行此操作

代码语言:javascript
运行
复制
select distinct least(sender , receiver), greatest(sender , receiver) 
from t
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56375985

复制
相关文章

相似问题

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