程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了将 LIKE 与 UPDATE 中不同表中的多个名称一起使用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决将 LIKE 与 updatE 中不同表中的多个名称一起使用?

开发过程中遇到将 LIKE 与 updatE 中不同表中的多个名称一起使用的问题如何解决?下面主要结合日常开发的经验,给出你关于将 LIKE 与 updatE 中不同表中的多个名称一起使用的解决方法建议,希望对你解决将 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,请注明来意。