首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过高级方式进行分组

通过高级方式进行分组
EN

Stack Overflow用户
提问于 2013-04-25 07:56:24
回答 2查看 74关注 0票数 0

在尝试进行查询以将消息分组到会话中时,我遇到了一个小问题。这样,具有相同发送者和接收者的消息将出现在同一会话中。也会有小组对话,这意味着两个人和两个人一起说话就像四个人一样。

我的数据库表如下所示:

表:messages

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+----+------+----+---------+---------+
| id | from | to | group_1 | group_2 |
+----+------+----+---------+---------+
| 1  | 1    | 2  | 0       | 0       |
| 2  | 2    | 1  | 0       | 0       |
| 3  | 1    | 0  | 1       | 2       |
| 4  | 2    | 0  | 2       | 1       |
| 5  | 3    | 0  | 1       | 2       |
| 6  | 4    | 0  | 2       | 1       |
| 7  | 4    | 1  | 0       | 0       |
| 8  | 1    | 4  | 0       | 0       |
+----+------+----+---------+---------+

我已经尝试了下面的方法,但是我得到了所有的消息,所以我需要创建一个group by,让它们放在一行中,而不是让同一个对话有多个行。

SELECT * FROM messages

因此,基本上需要做的是根据以下内容进行分组:

  • 分组行对话,其中fromto与其他行相等,而group_1group_2 = 0。但它还应该对to与其他行from相等的行进行分组,反之亦然,但仍然是在group_1group_2 =0时。(与上表中的前两行类似)
  • 分组对话,其中group_1group_2与其他行相等,而to = 0,以及group_1与其他行group_2相等,反之亦然,但to = 0。(像id为3和4的行)

因此,基本上它应该对组之间相互交谈的所有消息以及用户相互交谈的所有消息进行分组。

编辑

更好地解释group_1group_2

创建group_1group_2是为了让我可以将一个用户放在一个组中,并使一个组能够与另一个组对话。

因此,他们不使用tofrom,而是使用group_1group_2。它应该像用户会话一样对组会话进行分组(其中定义了fromto )。

当为to = 0时,您可以看到行是一个组。如果为to != 0,则它不是一个组。

它应该像用户一样对group_1group_2进行分组。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-25 12:08:20

这是我的提案;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM messages m GROUP BY m._from HAVING (m._to!=0 AND m.group_1=0 AND m.group_2=0)

SELECT * FROM messages m WHERE m.group_1=m._from OR m.group_2=m._to;

我也很难理解group_1和group_2的关系/目的。

单一查询(由提问者请求)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM messages m WHERE m.group_1=m._from OR m.group_2=m._to OR m.group_1=0 AND m.group_2=0
票数 1
EN

Stack Overflow用户

发布于 2013-04-25 08:08:43

你要找的是GROUP BY <field> HAVING <condition>。你的“需要做的事情”有点混乱,group_1和group_2也很混乱。您正在寻找的内容可能指向以下方向:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT   *
FROM     messages m
GROUP BY m.from HAVING (
    m.from = group_1 AND
    m.to   = group_2
)

我希望这将帮助你朝着正确的方向前进。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16209295

复制
相关文章
使用 JavaScript 进行数据分组最优雅的方式
对数据进行分组,是我们在开发中经常会遇到的需求,使用 JavaScript 进行数据分组的方式也有很多种,但是由于没有原生方法的支持,我们自己实现的数据分组函数通常都比较冗长而且难以理解。
ConardLi
2021/12/27
8.5K0
使用 JavaScript 进行数据分组最优雅的方式
根据分组依据对Java集合元素进行分组
业务背景:在项目中有个“分账”功能,就是支付的钱一部分要根据不同商品的分账金额自动分给平台提供商。
张张
2019/12/25
2.4K0
通过Ajax方式上传文件(input file),使用FormData进行Ajax请求
<div > <input type="file" name="FileUpload" id="FileUpload"> <a class="layui-btn layui-btn-mini" id="btn_uploadimg">上传图片</a> </div> <script type="text/jscript"> $(function () {
纯粹是糖
2018/03/14
6.5K0
sql对多个条件进行分组求和_分组求和法例题附答案
大家好,又见面了,我是你们的朋友全栈君。 在ireport中实现分组,求和。效果如下 name total A 2 A 3 subtotal 5 B 4 B 5 subtotal 9 添加Document–>Variables–>Variable Name 建立自定义的求和函数 设置相关属性。 Calculation 设置为sum reset type为report Reset group 选择自己创建的分组。 increment type 为Group Variable Expression填写你要累计的对象表达式。 new Integer($F{rxNo}) Initial Value Expression处填写数据类型的初始化对象。 new java.lang.Integer(0)
全栈程序员站长
2022/10/03
2.8K0
高级SQL查询-(聚合查询,分组查询,联合查询)[通俗易懂]
当遇到常见的统计总数、计算平局值等操作,可以使⽤聚合函数来实现,常见的聚合函数有:
全栈程序员站长
2022/09/05
4.4K0
Spring Cloud Stream 高级特性-分组和多通道
Spring Cloud Stream 是一个用于构建基于消息的微服务的框架,它提供了一种简单的方式来连接消息代理和应用程序,以便它们可以互相交换消息。Spring Cloud Stream 中有两个高级特性:分组和多通道。
堕落飞鸟
2023/04/12
7000
通过分组思想来发现问题
有些业务场景中,从多个维度研究问题,往往有些维度分类太多,从而导致无法得到想要的结果,这时我们可以采用重新分组的方式,相当于在这个维度上方又添加了一个维度来看待问题,往往会找到问题的来源。
陈学谦
2020/05/07
3830
Python中如何进行数据分组
数据分组 根据数据分析对象的特征,按照一定的数值指标,把数据分析对象划分为不同的区间进行研究,以揭示其内在联系和规律性。 cut 函数: cut(series,bins,right=True,labels=NULL) ① series  需要分组的数据 ② bins    分组的划分数组 ③ right   分组的时候,右边是否闭合,默认为闭合True ④ labels  分组的自定义标签,可以不自定义 import pandas data = pandas.read_csv( 'D:\\PDA\
Erin
2018/01/09
3.2K0
Python小案例(五)循环判断进行分组
需求背景:现有一列按照某规则排序后的产品,想进行打包进行组合售卖。要求按顺序进行价格累积,当价格累积超过2000后,需要从下一个产品重新开始打包。
HsuHeinrich
2023/02/24
4130
Python小案例(五)循环判断进行分组
Java对List列表进行分组处理(对List列表固定分组/对List列表平均分组)
将一组数据平均分成n组 即:数据分组数固定为N,每组数据个数不定,每组个数由List列表数据总长度决定 /** * 将一组数据平均分成n组 * * @param source 要分组的数据源 * @param n 平均分成n组 * @param <T> * @return */ public static <T> List<List<T>> averageAssign(List<T> source, int n) { List<List<T>> result = new Ar
目的地-Destination
2023/03/06
3.5K0
Python对字典根据键值分组进行排序
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119530.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/11
4.5K0
对 list 中的相同数据进行分组
同一组数据分组 需求:一个 list 里可能会有出现一个用户多条数据的情况。要把多条用户数据合并成一条。 思路:将相同的数据中可以进行确认是相同的数据,拿来做分组的 key,这样保证不会重。 实际中使用,以用户数据为例,可能用户名和身份证号是不会变的,用这两个条件拼接起来。
潇洒
2019/06/28
5.7K0
SpringBoot - 优雅的实现【参数分组校验】高级进阶
我们经常会碰到这样的一个场景: 新增的时候某些字段为必填(比如密码), 更新的时候非必填。
小小工匠
2022/02/22
1.8K0
SpringBoot - 优雅的实现【参数分组校验】高级进阶
网站通过发布软文的方式进行SEO优化起到的作用有多大
消费者一般通过互联网搜索引擎搜索获得想知道的信息内容,百度搜索引擎竞价是很多公司领导选用的SEO优化方式。一般来说,顾客出于对广告的防范意识,会在百度上查询企业其它的基本信息,这时候,公司平常发的软文被客户搜索到,从而使顾客产生信赖感进而选购,在顾客成交阶段起到了十分关键的作用。通常情况下,当公司发布的软文在各网络平台上展现,并有很多网友的互动交流信息下,这无疑提高了目标消费者对公司的信任感,进而催化顾客的购买心理,提高了客户转换率。
高级优化师
2019/10/19
6590
网站通过发布软文的方式进行SEO优化起到的作用有多大
R中如何用ifelse进行数据分组
数据分组,根据数据分析对象的特征,按照一定的数值指标,把数据分析对象划分为不同的区间部分来研究,以揭示内在的联系和规律性; 在R中,我们常用ifelse函数来进行数据的分组,跟excel中的if函数是同一种用法。 ifelse(condition,TRUE,FALSE) > data <- read.table('1.csv', sep='|', header=TRUE); > > level <- ifelse( + data$cost<=20, "(0,20]", + ifelse( +
Erin
2018/01/09
2.9K0
R中如何用ifelse进行数据分组
Django模板标签regroup方法对对象进行分组
在使用 Django 开发时,有时候我们需要在模板中按对象的某个属性分组显示一系列数据。例如博客文章按照时间归档分组显示文章列表,或者需要按日期分组显示通知(例如知乎)的通知列表。如果不熟悉 Django 内置的 regroup 模板标签,要完成这个需求可能还得费点功夫,而使用 regroup 则可以轻松完成任务。
菲宇
2019/08/14
7650
点击加载更多

相似问题

按子节点顺序进行高级分组

13

高级图中分组选项插件的修改方式

15

Ruby / Rails -使用group_by进行高级分组

11

使用分组集合对高级DataGrid进行排序

11

高级别分组

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文