我有一个我一直在努力的查询,我可以理解为什么它出错了,但是我似乎无法弄清楚如何使一切运转起来。
我的设置看起来像这样。
我有一个包含网站列表的数据库表
table name: websites
column name within websites:
domain_name
------------------
site1234.mydomain.com
site1235.mydomain.com
site1256.mydomain.com
site1257.mydomain.com
site1258.mydomain.com
我要做的是更改子域部分之后的所有内容,即:.mydomain.com - > .mynewdomain.com
我有查询来获得第一个子域名。
SELECT split_part(domain_name, '.', 1) AS site_name FROM websites;
所以我理解这需要在一个子选择中,但我不确定我错过了什么。我的select / subselect查询看起来像这样。
UPDATE websites SET domain_name = site_name || '.mynewdomain.com' FROM (SELECT split_part(domain_name, '.', 1) FROM websites) AS site_name WHERE domain_name LIKE '%.mydomain.com';
我理解为什么它出错了,因为我的第一个查询返回多行,所以它看到数据不匹配,我知道我需要一些循环遍历subselect中的每个结果并在初始select中使用该值,但是我不知道我需要什么语法来实现这个功能。
非常感谢任何帮助!
干杯,
-H
答案 0 :(得分:0)
UPDATE websites
SET domain_name = t.site_name || '.mynewdomain.com' FROM
(
SELECT split_part(domain_name, '.', 1) AS site_name
FROM websites
) t
WHERE domain_name LIKE '%.mydomain.com';