如果你不知道id,你怎么做更新,只是你知道另一个表关系的信息

时间:2011-04-30 16:24:03

标签: sql sql-server sql-update

我正在尝试执行此查询:

UPDATE asignaturasemestre 
   SET asignatura11 = 'cambiado' 
 WHERE asignaturasemestre.iddatosgenerales = datosgenerales.iddatosgenerales 
   AND datosgenerales.curp = 'CURP'

我知道这很糟糕,但这就是这个想法:

正如您所看到的,我不知道iddatosgenerales,但我知道它有一个外键(iddatosgenerales)。用户只会编写curp,所以这个curp不在另一个表中,所以我需要更新另一个表,但我不知道这行的id。 正如我告诉你的那样,我只知道CURP列,但这是在另一个表中(这是唯一的)。但它不是主键 - 它不介意,id是iddatosgenerales,它是我要更新的另一个表中的外键。

3 个答案:

答案 0 :(得分:5)

这适用于 MySQL

UPDATE asignaturasemestre AS a
     , datosgenerales AS d
SET  a.asignatura11='cambiado' 
WHERE a.iddatosgenerales=d.iddatosgenerales 
  AND d.curp='CURP'

这适用于 SQL-Server

UPDATE a
SET  a.asignatura11='cambiado' 
FROM asignaturasemestre AS a
    JOIN datosgenerales AS d
        ON a.iddatosgenerales=d.iddatosgenerales 
WHERE d.curp='CURP'

答案 1 :(得分:0)

update asignaturasemestre,datosgenerales 
set asignatura11='cambiado' 
where asignaturasemestre.iddatosgenerales=datosgenerales.iddatosgenerales 
and datosgenerales.curp='CURP'

答案 2 :(得分:0)

现在我找到了答案

update asignaturasemestre set asignatura11='cambiado' 
where iddatosgenerales=(select datosgenerales.iddatosgenerales from datosgenerales inner join asignaturasemestre on
datosgenerales.iddatosgenerales=asignaturasemestre.iddatosgenerales where curp='123ABC');

我做了正常的查询,但当我把iddatosgenerales我做一个查询得到iddatosgenerales与curp用户给了我