我正在尝试使用带有限制和排序依据的内部连接进行更新(尽管排序依据不是必需的。从我读到的内容来看,标准更新将不起作用...这就是我正在尝试的做:
UPDATE table1
INNER JOIN table2
ON table1.service_id=table2.service_id
SET table1.flags = NULL
WHERE table1.type = 'fttc'
AND table1.flags = 'co'
AND table2.sync not like '%Yes%'
AND table1.date >= $today_date
ORDER BY table1.priority ASC
LIMIT 20;
它用于案例管理工具并使用 php,我想更新 20 张票,即删除“标志”以便它们可以工作,数量将作为变量传递,所以我想更新 20例如最高“优先级”的票,如果可以的话?
最佳答案
如果我没看错你的问题,你想对连接产生的前 20 条记录执行更新,使用优先级作为排序。您不能直接在 MySQL AFAIK 的 UPDATE
中执行此操作,但您可以创建一个可更新的 View ,然后对其进行更新。
CREATE VIEW yourView
AS
SELECT
t1.service_id,
t2.service_id,
t1.flags,
t1.type,
t1.date,
t1.priority,
t2.sync
FROM table1 t1
INNER JOIN table2 t2
ON t1.service_id = t2.service_id
WHERE t1.type = 'fttc' AND
t1.flags = 'co' AND
t2.sync NOT LIKE '%Yes%' AND
t1.date >= $today_date
ORDER BY t1.priority
LIMIT 20;
然后更新这个 View :
UPDATE yourView
SET flags = NULL
关于使用带有 ORDER BY 和 LIMIT 的 INNER JOIN 的 MySQL 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43449102/