繁体   English   中英

SQL Update语句在where子句相同的表中带有子查询

[英]SQL Update statement with subquery in the where clause same table

我目前是一名学生,我正在尝试解决SQL的一个小问题。 我想根据来自同一张表的过滤结果在一张表上执行更新语句。 这是我的桌子:

这是我到目前为止的查询:

UPDATE ComplexityLessons
SET ACADEMYRATIO = '0,896' 
WHERE (
    SELECT c.START, c.DATE, c.ACTIVITY, c.ACADEMY
from ComplexityLessons c
join (
    SELECT b.ACTIVITY, b.START, b.DATE
    FROM ComplexityLessons b
) as b 
on c.ACTIVITY = b.ACTIVITY and c.DATE = b.DATE and c.START = b.START
having COUNT(DISTINCT ACADEMY) = 2)

因此,总而言之,我只想在两个学院同时进行相同活动的地方更新“ ActivityRatio”列。 当我仅使用子查询时,我会获得同时执行相同活动的学院,但是我无法弄清更新语句。 预先感谢您的帮助 !

UPDATE ComplexityLessons SET ACADEMYRATIO = '0,896' 
WHERE ( SELECT c.START, c.DATE, c.ACTIVITY, c.ACADEMY 
        from ComplexityLessons c 
join ( SELECT b.ACTIVITY, b.START, b.DATE 
       FROM ComplexityLessons b ) as b 
on c.ACTIVITY = b.ACTIVITY and c.DATE = b.DATE and c.START = b.START 
having COUNT(DISTINCT ACADEMY) = 2)

应该在哪里具有条件,子查询应返回ID。 例如

UPDATE ComplexityLessons SET ACADEMYRATIO = '0,896'
WHERE <id> in ( SELECT <id> from ComplexityLessons c 
join ( SELECT b.ACTIVITY, b.START, b.DATE 
       FROM ComplexityLessons b ) as b 
on c.ACTIVITY = b.ACTIVITY and c.DATE = b.DATE and c.START = b.START 
having COUNT(DISTINCT ACADEMY) = 2)

应该是表之间的前键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM