我有一個包含role_id行的帳戶表。我有另一個稱爲組織組的組織,它擁有與組織相關聯的組織,這個組織擁有一個ID和一個名稱列。我有第三個名爲account_group的表,它有兩列,一個是account_id和一個group_id,可以將兩者一起映射。JOIN子查詢中SQL更新拋出錯誤
現在我想檢查該帳戶的組,並根據組的名稱我將更新此帳戶的角色id值。
我設法想查詢:
UPDATE account
SET account.role_id = (CASE WHEN organisation_group.name = "Social Worker" THEN 50
WHEN organisation_group.name = "Foster Carer" THEN 26
END)
WHERE organisation_group.name in
(SELECT organisation_group.name FROM organisation_group
INNER JOIN account_group ON organisation_group.id = account_group.group_id
WHERE organisation_id = 11 GROUP BY organisation_group.name);
這是拋出下面的錯誤Unknown column 'organisation_group.name' in 'IN/ALL/ANY subquery'
。我不擅長SQL,但我需要這個更新。任何想法如何做這個操作。
50和26是我想要使用的角色ID。
更新1(更清晰的闡釋)
我有列[ID,用戶名,名,ROLE_ID,organisation_id]帳戶表。
我需要編輯account.role_id列。我需要做的是:
- 檢查帳戶的組名稱。
這些組位於名爲organisation_group的表中。此表格有三列[id,organisation_id,name]。
要映射帳戶與組我有一個名爲account_group有三個列[id。 account_id,group_id]。
2-根據組名稱,我需要更新account.role_id以在(組名=角色名稱)時具有角色ID。
該角色存儲在名爲organisation_role的表中,該表具有列[id,name,organisation_id]。
您無法訪問子查詢外部的'organisation_group'表。 –
一些示例數據或更好的描述你想要做的事情會有所幫助。 –
您的查詢沒有結果。你正在用'organisation_group.name'對子查詢進行分組。因此你失去了與'賬戶'表的關係。 –