使用多个表的 SQL Server 更新

标签 sql sql-server

我对 SQL 不太了解 - 我只是编写一个 RFID 学生注册扫描仪,它与 SQL Server 中的数据库连接。

我确信这很容易做到,但我找不到解决我的问题的方法。

我希望能够以基本形式做这样的事情,但这是行不通的:

UPDATE Attendance 
SET    A1 = 'TRUE' 
WHERE  Student.ID = '3a0070c48' 
  AND  Module.Day = 'Friday' ;

但是完整的 SQL 更新需要是这样的:

UPDATE Attendance 
SET    A1 = 'TRUE' 
WHERE  Student.ID = '3a0070c48' 
  AND  Module.Day = 'Friday' 
  AND  '1100' BETWEEN Module.StartTime 
                  AND Module.EndTime ;

最佳答案

好的,你需要做这样的事情:

UPDATE A
SET A.A1 = 'TRUE' 
FROM Attendance A
INNER JOIN Student S
    ON A.StudentId = S.ID
INNER JOIN Module M
    ON A.ModuleId = M.ID
WHERE S.ID = '3a0070c48' 
AND M.[Day] = 'Friday' 
AND '1100' BETWEEN M.StartTime AND M.EndTime

我猜测了与您的表相关的列,但它应该与您拥有的非常接近,您需要使用真实的列。

关于使用多个表的 SQL Server 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15554941/

相关文章:

sql - INSTEAD OF INSERT 触发器和标识列使用 View

sql-server - SQL 中常量的最佳模式?

c# - 一个大查询或许多小查询

sql - 转换失败 (SQL Server 2008)

mysql - 如何使用两列获取过去的记录和即将到来的记录

java - 有没有办法以可配置的方式将字段视为@Transient?

sql-server - 如何在 T-SQL 中重写电话号码?

sql - 如何授予用户访问 SQL Server 中的 sys.master_files 的权限?

mysql - 执行查询但没有显示数据 - MySQL

sql - 重构一个 PL/pgSQL 函数以返回各种 SELECT 查询的输出