我有两张桌子:
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'
答案 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';
<强> 更新 强>
如果code
和text
相等,则可行:
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文档