这是一个Firebird数据库。
第一张表
联系人Company_ID - job_title
第二张表
Client_id - Co_name
在联系人中,我希望job_title字段包含co_name。
client_id和company_id是一样的。 Co_name对应于company_id以及client_id。
这个:
UPDATE Contacts
SET Contacts.Job_title = Clients.co_name
where company_id in (
select client_id from clients
JOIN Contacts c ON Client_id=company_id where record_status='A')
给我一个无法找到的错误(clients.co_name)
另一个选择:
UPDATE Contacts
JOIN Clients ON Clients.Client_id = Contacts.Client_id
SET Contacts.Job_title = Clients.Client_name
在JOIN上给我一个错误
还有其他想法吗?
答案 0 :(得分:0)
UPDATE Contacts
JOIN Clients ON Clients.Client_id = Contacts.Client_id
SET Contacts.Job_title = Clients.Client_name
答案 1 :(得分:0)
要从其他来源更新表格,您可以使用仅适用于Firebird 2.1或更高版本的MERGE
:
merge into Contacts
using Clients
on Contacts.Company_ID = Clients.Client_id
when matched then update set Contacts.Job_title = Clients.co_name
使用UPDATE
是可能的,但由于缺乏对连接更新的支持,它会变得很快,等效查询将类似于下面的代码。我不确定这是否适用于Firebird 1.5。
update Contacts
set Job_title = (select Clients.co_name from Client where Clients.Client_id = Contacts.Company_ID)
where exists (select * from Client where Clients.Client_id = Contacts.Company_ID)
由于两个独立评估的子选择,这可能效率低下。