我有一张这样的桌子:
+------+-----------+
|caseID|groupVarian|
+------+-----------+
|1 |A,B,C,D,E |
+------+-----------+
|2 |A,B,N,O,P |
+------+-----------+
|3 |A,B,N,O,P |
+------+-----------+
|4 |A,B,C,D,F |
+------+-----------+
|5 |A,B,C,D,E |
+------+-----------+
我想获得一个新列nameVarian
,以使相同的groupVarian
值具有由表示的相同排名nameVarian
(例如:v1,v2等)。但是,nameVarian
分配给特定值的值groupVarian
应按照caseID
(在表中出现的顺序)的顺序。
输出应该是这样的:
+------+-----------+----------+
|caseID|groupVarian|namevarian
+------+-----------+----------+
|1 |A,B,C,D,E |v1 |
+------+-----------+----------+
|2 |A,B,N,O,P |v2 |
+------+-----------+----------+
|3 |A,B,N,O,P |v2 |
+------+-----------+----------+
|4 |A,B,C,D,F |v3 |
+------+-----------+----------+
|5 |A,B,C,D,E |v1 |
+------+-----------+----------+
对于 MySQL版本
<8.0
(OP的版本是5.6):
问题陈述看起来需要DENSE_RANK功能groupVarian
; 但是事实并非如此。正如 @Gordon
Linoff
解释的
那样 :
您似乎希望按它们在数据中出现的顺序来枚举它们。
假设您的表名是t
(请为您的代码相应地更改表名和字段名)。这是一种利用会话变量的方法(
对于MySQL的较早版本 ),给出期望的结果( DB Fiddle ):
SET @row_number = 0;
SELECT t3.caseID,
t3.groupVarian,
CONCAT('v', t2.num) AS nameVarian
FROM
(
SELECT
(@row_number:=@row_number + 1) AS num,
t1.groupVarian
FROM
(
SELECT DISTINCT groupVarian
FROM t
ORDER BY caseID ASC
) AS t1
) AS t2
INNER JOIN t AS t3
ON t3.groupVarian = t2.groupVarian
ORDER BY t3.caseID ASC
另外:
我之前的模拟DENSE_RANK
功能的尝试效果很好。尽管也可以对先前的查询进行一些微调以实现DENSE_RANK
功能。但是,以下查询效率更高,因为它创建的
Derived表较少 ,并避免了 JOIN on groupVarian
:
SET @row_number = 1;
SET @group_varian = '';
SELECT inner_nest.caseID,
inner_nest.groupVarian,
CONCAT('v', inner_nest.num) as nameVarian
FROM (
SELECT
caseID,
@row_number:=CASE
WHEN @group_varian = groupVarian THEN @row_number
ELSE @row_number + 1
END AS num,
@group_varian:=groupVarian as groupVarian
FROM
t
ORDER BY groupVarian
) AS inner_nest
ORDER BY inner_nest.caseID ASC
问题内容: 是否有类似于C的Go功能,能够处理控制台中的Tab键?我想在控制台应用程序中完成一些工作。 问题答案: C的示例: 等效: 最后的注释行仅显示当您按下第一个元素时,是U + 0009(’CHARACTER TABULATION’)。 但是,由于您的需要(检测选项卡),C 并不适合,因为它需要用户按Enter键。您需要的是@miku提到的ncurses的getch()/ readline
问题内容: 我正在尝试将一些Python代码移植到Scala。它大量使用了Numpy和Scipy。虽然我已经找到了许多密集矩阵/线性代数库,它们可以作为NumPy的适当替代品(但不是极好的替代品),但我还没有真正找到能够提供我在SciPy中使用的功能的东西。特别是,我正在寻找一个支持稀疏部分本征分解的库(例如SciPy对arpack的包装),然后再寻找SciPy提供的一些简单内容的库(例如直方图)
框架:UNIAPP.先上图: 这是京东的订单评论功能,文本输入框在不选择标签时可正常输入评论,此时有几个标签可供用户选择,选择完标签后,另起一行,在文本框中出现带标签的文字(如图中箭头所示),可输入相关内容,再点击标签时提示请删除标签后内的内容。删除完内容后再按一次键盘上的删除键,整个标签被删除。 想问下这种功能是怎么实现的?
本文向大家介绍有没有类似于MySQL中Oracle的trunc(sysdate)的功能?,包括了有没有类似于MySQL中Oracle的trunc(sysdate)的功能?的使用技巧和注意事项,需要的朋友参考一下 是的,您可以用于仅获取MySQL中的日期部分,并且可以用于获取MySQL中的当前日期。 当前日期如下- 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表
问题内容: 我正在寻找一种解决方案,可以从adb访问我们应用程序的内部状态以进行调试。我已经使用了dumpsys来获取系统服务的内部状态,所以现在我想知道是否可以将应用程序的接口公开到adb。到目前为止,我唯一想到的就是定期记录信息,然后只读取logcat,但如果可能的话,我希望能够通过adb直接与应用程序进行交互,因此问题是如何在我们的应用程序中实现此功能。 问题答案: 在您的覆盖方法中,例如:
问题内容: 我想找到多列的最大值。 MySQL支持该GREATEST功能,但SQL Server不支持。 SQL Server 2008中是否有与此相似的功能? 问题答案: 否。但是子查询可以访问外部查询中的列,因此您可以添加一个子查询UNION ALL,将感兴趣的列作为派生表,然后从中进行选择max。 或像您在2008年时一样简洁的版本。