【发布时间】:2019-10-29 18:48:25
【问题描述】:
我正在尝试从其中 1 条记录符合条件的数据集中选择所有记录。我有一个数据表,其中包含一个人每天工作的时间。如果该周内的一条记录的“已记录”标志设置为“N”,我需要选择该周某人的所有记录。这是一个数据示例:
t_hours:
Name Week Weekday Hours Logged
===============================
Jim 1 Mon 8 Y
Jim 1 Wed 8 Y
Jim 1 Fri 8 Y
Jim 2 Mon 8 Y
Jim 2 Wed 8 Y
Bill 1 Mon 8 N
Bill 1 Tue 8 Y
Bill 1 Wed 8 Y
Bill 1 Thu 8 Y
Bill 2 Mon 8 Y
Bill 2 Tue 8 Y
我想编写一个查询,如果他们有一天 Logged='N',则将一个人工作周的所有记录更新为 Logged='N'。但我不知道如何选择记录。以下是我要更新的记录:
Name Week Weekday Hours Logged
===============================
Bill 1 Mon 8 N
Bill 1 Tue 8 Y
Bill 1 Wed 8 Y
Bill 1 Thu 8 Y
我尝试了一个普通的选择,但不知道如何在 where 子句中有两个相关的子查询:
SELECT * FROM t_hours
WHERE (Name = (SELECT t1.Name FROM t_hours t1
where t1.Name = t2.Name and t1.Week = t2.Week and
t1.Logged = 'N') and
Week = (SELECT t2.Week FROM t_hours t2
where t1.Name = t2.Name and t1.Week = t2.Week and
t2.Logged = 'N')
但这不起作用,非常感谢任何帮助。
【问题讨论】:
标签: sql sql-server where-clause correlated-subquery