有一个问题,在更新表‘佣金’中的一些行。现在我有了像commission_number /123/456这样的bar。我想把它重命名为John/123/456等,从'user‘表中取一个名字
commission user
------------------------- -----------------
commission_number|user_id username|user_id
------------------------- -----------------
bar/123/456 | 1 John | 1
bar/123/123 | 2 Bob | 2
bar/456/123 | 3 Thomas | 3下面是我的查询,使用'baz‘。但是不知道如何从'user‘表中放置'username’。我只需要替换'baz',并使用用户名从'user',但不知道如何。
UPDATE commission
SET commission_number = overlay(commission_number placing 'baz' FROM POSITION('bar' IN commission_number) for 3)
WHERE commission_number in (1,2,3,4,5,6,7,8)发布于 2013-03-12 21:39:04
我会从实验开始,比如..。
UPDATE commission
SET commission_number =
(SELECT UserName FROM User WHERE user.user_id=commission.user_id)
||SubString(commission_number,4,8000)除了前3个字符之外,还有right(commission_number,-3)可以从中获取所有字符。
我不知道你想要做什么
WHERE commission_number in (1,2,3,4,5,6,7,8)?
发布于 2013-03-12 21:47:22
update commission
set commission_number = u.username || '/' || left(commission_number, -strpos(commission_number, '/'))
from users u
where u.user_id = commission.user_id发布于 2013-03-12 21:48:41
这说明了数据在更新后的外观。在处理字符串函数时,我经常使用这种select语句。
select c.commission_number, c.user_id,
(select username
from "user"
where "user".user_id = c.user_id) username,
overlay(c.commission_number
placing (select username
from "user"
where "user".user_id = c.user_id)
from 1 for 3)
from commission c;现在,您可以使用您知道可以工作的术语来编写update语句。
update commission
set commission_number = overlay(commission_number
placing (select username
from "user"
where "user".user_id = commission.user_id)
from 1 for 3);https://stackoverflow.com/questions/15362505
复制相似问题