我已经找到了与我所问的问题类似的问题的解决方案,但到目前为止还没有一个完全解决我的问题,所以如果有少量重复,请原谅我。
我有一个表 meta_data,其中包含列 project、stage、function、m_char_2 和 id
meta_data
project | stage | function | m_char_2 | id |
519 | reception | notes | 11/1272 | 2363827 |
519 | reception | diagnosis_1| | 2363827 |
519 | reception | notes | 11/1278 | 2370589 |
519 | reception | diagnosis_1| | 2370589 |
519 | reception | notes | | 2398654 |
519 | reception | diagnosis_1| 13/2586 | 2398654 |
我希望将函数值 = 注释的 m_char_2 列中的值复制到相应 id 的函数值 = 诊断 1 的 m_char_2 列中。
我编写了一个语法,允许我对工作正常的单个 id 执行此操作
UPDATE meta_data
SET m_char_2 =
(SELECT m_char_2
FROM (SELECT * FROM meta_data) AS md
WHERE
md.stage ='Reception'
AND md.function='Notes'
AND md.id = 2363827)
WHERE
project=519
AND stage='Reception'
AND function ='Diagnosis_1'
AND id = 2363827;
但是,我无法让它适用于多个 id。我有超过 100 条记录要更新,所以不必为每个 id 条目运行查询。
这不起作用:
UPDATE meta_data
SET m_char_2 =
(SELECT m_char_2
FROM (SELECT * FROM meta_data) AS md
WHERE
md.stage ='Reception'
AND md.function='Notes'
AND md.id IN (2363827,2370589))
WHERE
project=519
AND stage='Reception'
AND function ='Diagnosis_1'
AND id IN (2363827,2370589);
它返回错误#1242 subquery returns more than 1 row
。
有什么建议么?