大佬教程收集整理的这篇文章主要介绍了将 LIKE 与 UPDATE 中不同表中的多个名称一起使用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如果 name
中的字符串包含来自 POSTGResql 中不同表的值,我希望将字段更新为不同的值:
需要更新的表格类型
ID | name | type
1 | Google Page | WEBSITE
2 | Yahoo Page | WEBSITE
3 | Facebook Page | WEBSITE
...
表公司具有名称
ID | name
1 | Google
2 | Yahoo
3 | Facebook
4 | Twitter
5 | Stackoverflow
...
我尝试了什么
updatE types
SET type = 'BUSInesS'
WHERE name liKE CONCAT((SELECT companIEs.name from companIEs),'% Page')
但我遇到了这个问题:[21000] ERROR: more than one row returned by a subquery used as an Expression
您可以使用具有存在逻辑的子查询来保留您当前的逻辑:
updatE types t
SET type = 'BUSInesS'
WHERE EXISTS (SELECT 1 FROM companies c
WHERE CONCAT(c.name,' Page') = t.Name);
您也可以使用更新联接:
updatE types t
SET type = 'BUSInesS'
FROM companies c
WHERE t.name = CONCAT(c.name,' Page');
,
您应该使用 IN 指令:
WHERE name IN (SELECT CONCAT(companies.name,' Page') name from companies)
,
比比较连接的字符串便宜得多:
updatE types t
SET type = 'BUSInesS'
FROM companies c
WHERE right(t.name,5) = ' Page'
AND left(t.name,-5) = c.name;
dbfiddle here
以上是大佬教程为你收集整理的将 LIKE 与 UPDATE 中不同表中的多个名称一起使用全部内容,希望文章能够帮你解决将 LIKE 与 UPDATE 中不同表中的多个名称一起使用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。