- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
4天前关闭。
Improve this question
如何使用SQL查询将名为computed_no2
(INT)的计算列添加到表中?
具体来说,每当"间距"、"强度"或"速度"列的任何(一个或多个)值发生更改时,我希望在"概念"、"形式"或"SIN"列具有相同值的行中将整数值增加1。
我知道如何只在一列中查找不同的值(比如Aparature),但我在多列中遇到了问题:
UPDATE results
SET computed_no2 = (SELECT COUNT(DISTINCT Aparature)
FROM results AS r
WHERE r.Concept = results.Concept
AND r.Form= results.Form
AND r.SIN= results.SIN
AND r.Aparature < results.Aparature) + 1
1条答案
按热度按时间w46czmvw1#
您可以通过使用窗口函数(更具体地说是DENSE_RANK)来实现排序:
输出:
| 概念|表格|正弦|隔离|强度|速度|计算_no2|
| - ------|- ------|- ------|- ------|- ------|- ------|- ------|
| ABC1|盖|表格一|第二章|尖峰|一百|1个|
| ABC1|盖|表格一|第二章|尖峰|二百|第二章|
| ABC1|盖|表格二|第二章|尖峰|一百|1个|
| ABC1|盖|表格二|第二章|尖峰|一百|1个|
| CDA2基因|低|表格三|三个|模|五十|1个|
| CDA2基因|低|表格三|三个|模|五十|1个|
| CDA2基因|低|表格三|第二章|模|七十|第二章|
| CDA2基因|低|表格三|四个|模|七十|三个|
注意
ORDER BY
子句(在DENSE_RANK
中)中字段的顺序对结果有很大的影响!我不得不尝试一下才得到您期望的顺序。要更新这些值,将上一次查询的结果存储在临时表(我们称之为 * tmp *)中可能更容易,然后按如下所示进行更新:
最后可以删除临时表了!