【问题标题】:UPDATE and INSERT in the same query when criteria is met满足条件时在同一查询中进行 UPDATE 和 INSERT
【发布时间】:2016-02-03 18:36:01
【问题描述】:

我试图完成的是我尝试更新表中的列并在满足特定条件时插入到另一个表中。

到目前为止我已经尝试过

UPDATE raffles r SET active = 3 INNER JOIN (INSERT INTO raffles_notifs VALUES (uid,raf_id,type) VALUES (r.uid,r.id,1) ) WHERE r.end_stamp = '123123123' AND wuid = 0;

这会引发错误,这只是一次盲目的尝试。我什至可能会对此投一些反对票,但我真的迷路了,所以不得不问

【问题讨论】:

  • 尝试使用两个单独的语句。
  • 我是否必须在第二个语句中使用子查询来获取要插入的值。
  • 你问的是last_insert_id()吗?

标签: mysql insert sql-update inner-join


【解决方案1】:

只需使用两个查询。更新第一,INSERT SELECT第二:

UPDATE
    raffles AS r
SET
    active = 3
WHERE
    r.end_stamp = '123123123'
    AND wuid = 0
;

INSERT INTO raffles_notifs (uid,raf_id,type)
    SELECT r.uid, r.id, 1
    FROM raffles AS r
    WHERE
        r.end_stamp = '123123123'
        AND wuid = 0
;

【讨论】:

    猜你喜欢
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 2021-10-27
    • 2021-03-22
    相关资源
    最近更新 更多