mysql - 使用连接更新列

标签 mysql sql mysql-error-1093

SELECT lott.id as lottery_id,lott.abbr,lott.currency,payments.id as payment_id,
    payment_prizes.prize_id,prizes.name,prizes.currency as prizes_currency
    FROM lotteries lott 
    JOIN lottery_payments payments 
        ON
        payments.lottery_id =  lott.id
    JOIN lottery_payment_prizes payment_prizes
        ON
        payment_prizes.payment_id = payments.id
    JOIN lottery_prizes prizes
        ON
        prizes.id =  payment_prizes.prize_id
    WHERE lott.currency = "ID"

我需要更新 lottery_prizes 表中的所有货币,其中 ID 来自上面的查询。 我这样做了

UPDATE lottery_prizes SET currnecy = 'ID'
 WHERE id IN(SELECT prizes.id
    FROM lotteries lott 
    JOIN lottery_payments payments 
        ON
        payments.lottery_id =  lott.id
    JOIN lottery_payment_prizes payment_prizes
        ON
        payment_prizes.payment_id = payments.id
    JOIN lottery_prizes prizes
        ON
        prizes.id =  payment_prizes.prize_id
    WHERE lott.currency = "ID")

我有这个错误:
/* SQL 错误 (1093): 您不能在 FROM 子句中指定要更新的目标表 'lottery_prizes' */ 谢谢大家

最佳答案

  UPDATE lottery_prizes l 
   JOIN (SELECT prizes.id
      FROM lotteries lott 
      JOIN lottery_payments payments 
          ON
          payments.lottery_id =  lott.id
      JOIN lottery_payment_prizes payment_prizes
          ON
          payment_prizes.payment_id = payments.id
      JOIN lottery_prizes prizes
          ON
          prizes.id =  payment_prizes.prize_id
      WHERE lott.currency = "ID") t
      ON t.Id = l.Id
 SET currency = 'ID'          

关于mysql - 使用连接更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449836/

相关文章:

c# - 从 varbinary case sql server c# 中读取图像

mysql - 更新具有最大 id 值的记录,其中 nick = 'a'

php - 从 mySQL 数组中的 php 函数返回变量

mysql - 无法连接到远程 MySQL 服务器

c# - OrmLite插入0而不是自动递增主键

MySQL "join as"?

mysql - 从与插入或更新相同的表中选择

sql - 使用重复条目更新行

php - 透视查询以显示一年中每一天的数据

php - 防止 XSS 攻击并正确编码字符