首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按问题排序- mysql

问按问题排序- mysql
EN

Stack Overflow用户
提问于 2014-08-07 19:54:00
回答 1查看 22关注 0票数 0

我有一个表'sharelist‘,具有以下属性

代码语言:javascript
复制
linkID
bool1
bool2
bool3
activityTime

linkID和activityTime是ints。布尔1-3是布尔人。

我需要一个查询,它将首先根据linkID (简单组逐语句)将行分组。最难的部分是排序。让我们假设来自'sharelist‘的第1-5行对于linkID具有相同的值,因此在结果表中合并成一个条目。如果这5行中的任何一行对于bool1、bool2或bool3的值都为true,则整个组被视为“新的”。否则,这个群体被认为是“老”的。此外,对于每个组,应该存储最大的activityTime。

我希望结果表中的所有“新”组首先由最大activityTime排序,然后由最大activityTime排序所有“旧”组。这就是我到目前为止所拥有的。

代码语言:javascript
复制
SELECT linkID, MAX(activityTime) 
FROM sharelist
GROUP BY linkID
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-07 19:58:33

您可以使用order by子句中的表达式来完成此操作:

代码语言:javascript
复制
SELECT linkID, MAX(activityTime) 
FROM sharelist
GROUP BY linkID
ORDER BY (bool1 or bool2 or bool3) desc, max(activityTime)

MySQL将布尔值视为整数,因此您实际上可以按真表达式的数量排序:

代码语言:javascript
复制
SELECT linkID, MAX(activityTime) 
FROM sharelist
GROUP BY linkID
ORDER BY (bool1 > 0) + (bool2 > 0) + (bool3 > 0) desc, max(activityTime)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25191078

复制
相关文章

相似问题

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