我有一个具有以下属性的表“共享列表”
linkID
bool1
bool2
bool3
activityTime
linkID和activityTime是整数。 bool1-3是布尔值。
我需要一个查询,该查询将首先基于linkID(简单的GROUP BY语句)将行分组在一起。困难的部分是订购。假设“共享列表”中的1-5行具有相同的linkID值,因此在结果表中合并为一个条目。如果这5行中的任何一行的bool1,bool2或bool3的值为true,则整个组都被视为“新”。否则,该组被认为是“旧的”。此外,对于每个组,应存储最大activityTime。
我希望结果表中的所有“新”组首先按最大activityTime排序,然后所有“旧”组按最大activityTime排序。这是我到目前为止所拥有的。
SELECT linkID, MAX(activityTime)
FROM sharelist
GROUP BY linkID
最佳答案
您可以使用order by
子句中的表达式来执行此操作:
MySQL将布尔值视为整数,因此您实际上可以按真实表达式的数量进行排序:
SELECT linkID, MAX(activityTime)
FROM sharelist
GROUP BY linkID
ORDER BY (bool1 or bool2 or bool3) desc, max(activityTime)