我在customer_service_types
中有一个表phpmyadmin
,其中包含以下字段:
id (int) | customer_id (int) | service_type_int (int) | price (decimal) | created (datetime) | card (tinyint)
以下是一些条目:
当用户为具有自定义创建日期的客户添加新服务时,该应用程序正在创建ID为3(付款)的具有当前日期的另一项服务。我想用以下服务日期更新所有付款。
所以我要做的是使用针对特定客户的以下服务的created
值更新付款的created
字段。因此,例如,对于相同的created
,我需要用id
的值来更新created
的{{1}}:168,但如果具有{{1} }!= 3。
到目前为止已尝试:
customer_id
但我收到此错误:
您不能在FROM子句中指定目标表'cst'用于更新
我不知道此查询是否会产生所需的结果
答案 0 :(得分:2)
您可以将子查询转移到Derived Table表单中。请尝试以下操作:
UPDATE customer_service_types AS cst
JOIN
(
SELECT id, created
FROM customer_service_types
WHERE service_type_id <> 3
) AS cst2
ON cst.id = (cst2.id - 1)
SET cst.created = cst2.created
WHERE cst.service_type_id = 3;
答案 1 :(得分:0)
您可以使用join
:
UPDATE customer_service_types cst JOIN
customer_service_types cstnext
ON cstnext.id = cst.id and cstnext.service_type_id <> 3
SET cst.created = cstnext.created
WHERE cst.service_type_id = 3;