我正在 SQL 中运行以下查询。
SET @thisid=0;
SET @serial=0;
SELECT @serial := IF((@thisid != `places`.`id`), @serial + 1, @serial) as `serial`, @thisid := `places`.`id`, `places`.`id` FROM `places`;
仅当新 id 与上一个 id 不同时,变量 @serial 基本上才会递增。在终端中运行这些查询并打印 @serial 和 @thisid 的值时,收到的值是 @thisid='id6' @serial=6。
我在我的 go 代码中执行了这个查询:
if _, err = repo.db.ExecContext(ctx, "SET @thisid=0;"); err != nil {
return
}
if _, err = repo.db.ExecContext(ctx, "SET @serial=0;"); err != nil {
return
}
rows, err = repo.db.QueryContext(ctx, fmt.Sprintf(
"SELECT @serial := IF((@thisid != `places`.`id`), @serial + 1, @serial) as `serial`, @thisid := `places`.`id`, `places`.`id` FROM `places`;",
))
if err != nil {
fmt.Println("error here")
return
}
if err = repo.db.QueryRow("SELECT @serial").Scan(&that); err != nil {
return
}
if err = repo.db.QueryRow("SELECT @thisid").Scan(&this); err != nil {
return
}
打印@thisid和@serial的值时,@thisid的值与@serial的值接收为0相同。它似乎没有动态更新。
www说
慕慕森
相关分类