【问题标题】:MySQL UPDATE with SELECT (mark "item" as read)MySQL UPDATE with SELECT(将“项目”标记为已读)
【发布时间】:2013-01-10 14:07:16
【问题描述】:

我有以下查询,它从“ac_pms”表中选择个人消息 (PM)。使用LEFT JOIN 从其他表“ac_accounts”获取附加信息。 “ac_pms”表中有“pm_read”列,定义了一个PM是否被读取。我需要在选择 PM 时将该字段 (pm_read) 设置为“1”。

SELECT p.*, a.seller_id, a.winner_id 
FROM `ac_pms` AS p 
LEFT JOIN `ac_accounts` AS a ON p.pm_for_lot = a.id 
WHERE (p.pm_from=[user_id] OR p.pm_to=[user_id]) 
  AND p.pm_for_lot=[account_id] 
ORDER BY p.pm_date DESC;

我无法想象将UPDATE 表达式插入到SET pm_read = 1 的位置。

【问题讨论】:

    标签: mysql sql select join sql-update


    【解决方案1】:

    你不能SELECT和UPDATE在同一个SQL语句中。

    但是,您可以像这样使用UPDATE 和JOIN:

    UPDATE ac_pms AS p 
    LEFT JOIN ac_accounts AS a ON p.pm_for_lot = a.id 
    SET p.pm_read = 1
    WHERE (p.pm_from=[user_id] OR p.pm_to=[user_id]) 
      AND p.pm_for_lot = [account_id];
    

    然后你可以在此之后再创建一个SELECT。

    【讨论】:

      猜你喜欢
      • 2018-06-07
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      • 2013-11-26
      • 2023-03-20
      相关资源
      最近更新 更多