Jan*_*n.J 7 mysql sql subquery sql-update
我想要做的是为每个患者设置其唯一的患者代码,该代码以1开头,而不是基于行ID.Id仅指定订单.像这样的东西:
patient_id patient_code
2 1
3 2
4 3
Run Code Online (Sandbox Code Playgroud)
这是我的查询:
UPDATE patients p1
SET p1.patient_code = (
SELECT COUNT( * )
FROM patients p2
WHERE p2.patient_id <= p1.patient_id
)
Run Code Online (Sandbox Code Playgroud)
但这是错误:
#1093 - You can't specify target table 'p1' for update in FROM clause
Run Code Online (Sandbox Code Playgroud)
我找到了这个帖子:Mysql错误1093 - 无法在FROM子句中指定更新目标表.
但是我不知道如何应用已批准的答案来处理COUNT所需的子查询WHERE.
UPDATE
patients AS p
JOIN
( SELECT
p1.patient_id
, COUNT(*) AS cnt
FROM
patients AS p1
JOIN
patients AS p2
ON p2.patient_id <= p1.patient_id
GROUP BY
p1.patient_id
) AS g
ON g.patient_id = p.patient_id
SET
p.patient_code = g.cnt ;
Run Code Online (Sandbox Code Playgroud)