【问题标题】:How do you do a update if you don't know the id, and just you know a information with another table relationed如果您不知道 id,您如何进行更新,而您只知道与另一个表相关的信息
【发布时间】:2012-05-04 21:06:07
【问题描述】:

我正在尝试执行此查询:

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

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

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

【问题讨论】:

  • 当您使用 mssql 服务器而不是 mysql 时,为什么您会否决我们的答案?编辑。我还没有看到 OMG Ponies 的评论给你写了同样的话。
  • 如果您甚至不知道您使用的是什么 rdbms,这不是我们的错。
  • @nick:下次有人问,我会回答:“我正在使用 My-SQL-Server”

标签: sql sql-server sql-update


【解决方案1】:

这适用于 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'

【讨论】:

  • 查看此错误消息 156,级别 15,状态 1,行 1 关键字“AS”附近的语法不正确。使用该代码,我知道您可以将 ( , ) 放入更新 sintaxis
  • @angel:该错误消息不是您从 MySQL 获得的格式,而是 SQL Server... 它有所不同,知道您使用的是什么数据库,因为它们并不都支持完全相同的东西。
  • thnx @OMG,我开始怀疑哪个版本的 MySQL 不支持 UPDATE 上的这种语法...
【解决方案2】:
update asignaturasemestre,datosgenerales 
set asignatura11='cambiado' 
where asignaturasemestre.iddatosgenerales=datosgenerales.iddatosgenerales 
and datosgenerales.curp='CURP'

【讨论】:

  • 你不能把asignaturasemestre,datosgenerales,你不能使用(,)
【解决方案3】:

现在我找到了答案

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

我做了正常的查询,但是当我输入 iddatosgenerales 时,我做了一个查询,得到带有 curp 用户给我的 iddatosgenerales

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    相关资源
    最近更新 更多