我正在使用一个临时表,我不确定这是否重要,它是这样创建的:
CREATE TABLE #ActivityLog
(
ActivityLogID UNIQUEIDENTIFIER,
VehicleID UNIQUEIDENTIFIER,
ActivityDateTime DATETIME
)
我正在尝试操纵表格,以使每个ActivityDateTime
都没有重复的VehicleID
。
通过此查询,我得到了重复的值。
SELECT
s.ActivityLogID, t.*
FROM
#ActivityLog s
JOIN
(SELECT
VehicleID, ActivityDateTime, COUNT(*) AS qty
FROM
#ActivityLog
GROUP BY
VehicleID, ActivityDateTime
HAVING
COUNT(*) > 1) t ON s.VehicleID = t.VehicleID
AND s.ActivityDateTime = t.ActivityDateTime
ORDER BY
t.qty DESC
我的问题是我不知道如何遍历它们,以便在发现重复项时能够增加3毫秒(SQL处理的最短时间)。
因此,如果我有类似以下的行(我将简化uniqueID,以便它们显示更容易)
ActivityLogID | VehicleID | ActivityDateTime
---------------+-----------------+--------------------------
1 9 2019-06-03 18:48:53.000
2 9 2019-06-03 18:48:53.000
3 9 2019-06-03 18:48:53.000
4 9 2019-06-03 18:48:53.000
5 9 2019-06-03 18:48:53.000
6 9 2019-06-03 18:48:53.000
7 9 2019-06-03 18:49:53.000
8 9 2019-06-03 18:50:53.000
9 9 2019-06-03 18:50:53.000
10 9 2019-06-03 18:51:53.000
11 9 2019-06-03 18:51:53.000
12 9 2019-06-03 18:52:53.000
输出应类似于
ActivityLogID | VehicleID | ActivityDateTime
---------------+-----------------+--------------------------
1 9 2019-06-03 18:48:53.000
2 9 2019-06-03 18:48:53.003
3 9 2019-06-03 18:48:53.006
4 9 2019-06-03 18:48:53.009
5 9 2019-06-03 18:48:53.012
6 9 2019-06-03 18:48:53.015
7 9 2019-06-03 18:49:53.018
8 9 2019-06-03 18:50:53.000
9 9 2019-06-03 18:50:53.003
10 9 2019-06-03 18:51:53.000
11 9 2019-06-03 18:51:53.003
12 9 2019-06-03 18:52:53.000
答案 0 :(得分:2)
修改数据听起来是个坏主意。为了安全使用
package it.unibas.webanalytics.modello;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
/**
*
* @author Vincenzo Palazzo
*/
@Entity(name = "portali")
public class PortaleWeb {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private long id;
@Column(nullable = false, unique = true, length = 50)
private String nomeDominio;
@Column(nullable = false, unique = true, length = 50)
private String indirizzoIp;
@Column(length = 20)
private String indestatario;
@OneToOne(mappedBy = "root")
private AbstractSezione sezione;
public PortaleWeb() {
}
public PortaleWeb(String nomeDominio, String indirizzoIp, String indestatario, AbstractSezione sezione) {
this.nomeDominio = nomeDominio;
this.indirizzoIp = indirizzoIp;
this.indestatario = indestatario;
this.sezione = sezione;
}
public String getNomeDominio() {
return nomeDominio;
}
public String getIndirizzoIp() {
return indirizzoIp;
}
public String getIndestatario() {
return indestatario;
}
public ISezione getSezione() {
return sezione;
}
public void setNomeDominio(String nomeDominio) {
this.nomeDominio = nomeDominio;
}
public void setIndirizzoIp(String indirizzoIp) {
this.indirizzoIp = indirizzoIp;
}
public void setIndestatario(String indestatario) {
this.indestatario = indestatario;
}
public void setSezione(AbstractSezione sezione) {
this.sezione = sezione;
}
}
,我将添加5毫秒。所以:
package it.unibas.webanalytics.modello;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
/**
*
* @author Vincenzo Palazzo
*/
@Entity(name = "visualizzazioni")
public class Visualizzazione {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private long id;
@Column(nullable = true, length = 50)
private String nazioneDiProvenienza;
@Column(length = 250)
private String urlProvenienza;
@Column(length = 250)
private String urlDestinazione;
@Column(length = 50)
private String browser;
private int daQuanto;
@ManyToOne(cascade = CascadeType.ALL)
private Pagina pagina;
public Visualizzazione() {
}
public Visualizzazione(String nazioneDiProvenienza, String urlProvenienza, String urlDestinazione, String browser, int daQuanto) {
this.nazioneDiProvenienza = nazioneDiProvenienza;
this.urlProvenienza = urlProvenienza;
this.urlDestinazione = urlDestinazione;
this.browser = browser;
this.daQuanto = daQuanto;
}
public String getNazioneDiProvenienza() {
return nazioneDiProvenienza;
}
public String getUrlProvenienza() {
return urlProvenienza;
}
public String getUrlDestinazione() {
return urlDestinazione;
}
public String getBrowser() {
return browser;
}
public int getDaQuanto() {
return daQuanto;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public Pagina getPagina() {
return pagina;
}
public void setPagina(Pagina pagina) {
this.pagina = pagina;
}
public void setNazioneDiProvenienza(String nazioneDiProvenienza) {
this.nazioneDiProvenienza = nazioneDiProvenienza;
}
public void setUrlProvenienza(String urlProvenienza) {
this.urlProvenienza = urlProvenienza;
}
public void setUrlDestinazione(String urlDestinazione) {
this.urlDestinazione = urlDestinazione;
}
public void setBrowser(String browser) {
this.browser = browser;
}
public void setDaQuanto(int daQuanto) {
this.daQuanto = daQuanto;
}
}
答案 1 :(得分:0)
使用Gordon建议的技术,您可以在CTE中更新表格。像这样:
vmax
我也可以建议,如果您不希望对VehicleID和ActivityDateTime进行复制,请在表格上创建一个唯一约束。