小编Dav*_*ave的帖子

SQL更新查询 - 聚合可能不会出现在UPDATE语句的集合列表中

我正在尝试使用HOLIDAY_DATE_TABLE中最高的主键值(HID)来编写更新tbl8_update_transactions HID字段(其中为null)的查询.我收到以下错误

"聚合可能不会出现在UPDATE语句的集合列表中"

我已经读过我需要使用子查询完成此操作,但需要帮助.谢谢

USE BillingUI;
UPDATE tbl8_update_transactions
SET tbl8_update_transactions.HID = MAX(HOLIDAY_DATE_TABLE.HID)
FROM HOLIDAY_DATE_TABLE
WHERE tbl8_update_transactions.HID = NULL;
Run Code Online (Sandbox Code Playgroud)

更新:尝试了提议的解决方案

UPDATE tbl8_update_transactions
SET HID = h.maxHID
FROM (select max(HOLIDAY_DATE_TABLE.HID) as maxHID from HOLIDAY_DATE_TABLE) h
WHERE tbl8_update_transactions.HID IS NULL;
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会影响0行/不起作用.我认为这是因为HID是外键(in tbl8_update_transactions).真正的问题似乎是我的C#方法,用于将记录插入表中(它插入行而不填充外键).我想用触发器而不是C#代码处理它.我的表格如下.

USE BillingUI;
CREATE TABLE HOLIDAY_DATE_TABLE
(
HID INT IDENTITY PRIMARY KEY,
TABLE_NUMBER nchar(2) NOT NULL,
HOLIDAY_DATE nchar(8) NOT NULL,
FIELD_DESCRIPTION nVARchar(43) NULL,
);

USE BillingUI;
CREATE TABLE tbl8_update_transactions
(
TID INT IDENTITY PRIMARY KEY,
TABLE_NUMBER nchar(2) NOT NULL,
HOLIDAY_DATE …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

12
推荐指数
1
解决办法
4万
查看次数

条件数的计数值

我试图计算表AUTHORIZED_USERS中存在登录用户ID的实例数.我正在寻找的值可以在UNAME字段中找到,它是一个包含以下格式的字符串:COMPANYNAME\111222333.如果表中存在该值,则表示用户有权访问应用程序/视图.否则,它们将被重定向到拒绝访问的页面.我的代码接近工作,但出现以下错误

Incorrect syntax near '\601011307'.
Run Code Online (Sandbox Code Playgroud)

\ 601011307是表UNAME字段中包含的条目的一部分.它应该识别的全部值是COMPANYNAME\601011307.

如何防止此错误并将计数值分配给变量,以便我可以在条件中使用它?

 public ActionResult HolidayDateTable()
    {
        string whoareyoupeople = User.Identity.Name.ToString();
        DateTime date = DateTime.Now;
        string myerrorstring = "User " + whoareyoupeople + " attempted unauthorized access on " + date + ".";
        SqlConnection conn = new SqlConnection("Data Source=SWDB10DSQL;Initial Catalog=BillingUI;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework");
        conn.Open();
        SqlCommand cmd = conn.CreateCommand();
        {
            cmd.CommandText = string.Format("SELECT COUNT(*) FROM AUTHORIZED_USERS WHERE UNAME = "+whoareyoupeople+")");

            int count = (int)cmd.ExecuteScalar();

            if (count == 0)
            {
                return RedirectToAction("AccessDenied");
            }
            else
            {
                return View(db.HOLIDAY_DATE_TABLE);
            } …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server visual-studio-2012

0
推荐指数
1
解决办法
55
查看次数

标签 统计

sql ×2

sql-server ×2

c# ×1

visual-studio-2012 ×1