【发布时间】:2012-12-27 18:11:43
【问题描述】:
我有一个像这样的数据库:
我正在尝试创建一个查询,使我能够更新incident 表中status 属性的值,只要所有这三个属性的值:tabor_vatrogasci、tabor_policija 和tabor_hitna 包含在 izvještaj_tabora 表中,作为 oznaka_tabora 属性的值。例如,如果 tabor_vatrogasci、tabor_policija 和 tabor_hitna 属性的值分别为 3、4 和 5,则应(且仅当)3、4 和 5 时更新 incident 表包含在izvještaj_tabora 表中。
这是我尝试过的,但没有奏效:
UPDATE incident SET status='Otvoren' FROM tabor,izvjestaj_tabora
WHERE (incident.tabor_policija=tabor.oznaka
OR incident.tabor_vatrogasci=tabor.oznaka
OR incident.tabor_hitna=tabor.oznaka)
AND izvjestaj_tabora.oznaka_tabora=tabor.oznaka
AND rezultat_izvjestaja='Riješen' AND
((SELECT EXISTS(SELECT DISTINCT oznaka_tabora FROM izvjestaj_tabora)
WHERE oznaka_tabora=incident.tabor_policija) OR tabor_policija=NULL) AND
((SELECT EXISTS(SELECT DISTINCT oznaka_tabora FROM izvjestaj_tabora)
WHERE oznaka_tabora=incident.tabor_vatrogasci) OR tabor_vatrogasci=NULL) AND
((SELECT EXISTS(SELECT DISTINCT oznaka_tabora FROM izvjestaj_tabora)
WHERE oznaka_tabora=incident.tabor_hitna) OR tabor_hitna=NULL);
有没有人知道如何做到这一点?
【问题讨论】:
-
能否请您更具体地说明“没用”?
-
@Quassnoi:更新无效,因为至少有一个子查询的结果等于
false。
标签: sql postgresql sql-update exists