SQL更新column1,另一个表中的column2具有相同的单词

时间:2016-12-13 15:23:07

标签: mysql

我有两张桌子:

SELECT * 
FROM providerpaymentdetails, remarkcode;

providerpaymentdetails有列: id,amount,text,remark_code_id

remarkcode包含以下列: id,代码

如果providerpaymentdetails.text的text包含“B2”,“B3”,我想使用remark_code_id的相关ID更新remarkcode.code,其中包含“B2”,“ B3“等等

这是我现在的代码,但这不起作用。有什么想法吗?

SELECT * FROM providerpaymentdetails, remarkcode;
UPDATE providerpaymentdetails
set REMARK_CODE_ID = remark_code.id 
WHERE providerpaymentdetails.TEXT LIKE '%B2'

1 个答案:

答案 0 :(得分:1)

例如,使用子选择 - 有点像这样:

UPDATE providerpaymentdetails
   set REMARK_CODE_ID = (SELECT id
                           FROM remarkcode
                          WHERE code LIKE '%B2')
 WHERE providerpaymentdetails.TEXT LIKE '%B2';

如果子选择不唯一,您可以选择第一个(使用LIMIT)或最大ID:

UPDATE providerpaymentdetails
   set REMARK_CODE_ID = (SELECT MAX(id)
                           FROM remarkcode
                          WHERE code LIKE '%B2')
 WHERE providerpaymentdetails.TEXT LIKE '%B2';

<强> 更新

如果codetext相等,则可行:

UPDATE providerpaymentdetails ppd
   set REMARK_CODE_ID = (SELECT MAX(id)
                           FROM remarkcode
                          WHERE code = ppd.text)
 WHERE ppd.TEXT LIKE '%B2' 
    OR ppd.TEXT LIKE '%B3'
    OR ppd.TEXT LIKE '%B4';

或者,您可以查看有关regular expressions

的MySQL文档