簡體   English   中英

在創建基於集合的查詢來創建表數據而不是按程序執行時遇到問題

[英]Having trouble creating set-based query to create table data instead of doing it procedurally

給定具有唯一鍵id + appIdsettings

ID 應用程序ID 名稱
1 應用程序1 設置1
2 應用程序1 設置2

我創建了新條目,表格看起來像這樣

ID 應用程序ID 名稱
1 應用程序1 設置1
2 應用程序1 設置2
3 應用程序2 設置1
4 應用程序2 設置2

然后給定表user_settings將設置連接到用戶

用戶身份 設置 ID
1 1
1 2
2 1

我需要將為app2添加的所有新設置添加到當前具有app1設置的每個用戶。 用戶應該只獲取具有匹配name的設置。

我不知道這是否清楚,所以我也會這樣說:如果用戶對app1有一個給定name的設置,那么它應該為app2獲取具有相同name的設置。

有沒有辦法用基於集合的查詢來做到這一點? 或者我是否按程序執行此操作? 不幸的是,我不太擅長但基本的 SQL。

所以user_settings表最終應該是

用戶身份 設置 ID
1 1
1 2
2 1
1 3
1 4
2 3

感謝您的任何幫助。

這是您的方法:

select us.userid , s2.id
from user_settings us
join settings s1
   on s1.appid = 'app1'
   and us.settingsId = s1.id
join settings s2
 on s2.appid = 'app2'
 and s2.name = s1.name

您可以使用相同的查詢插入到您的表中。 db<> 在這里擺弄

您需要的insert語句確實可以在單個語句中完成,這樣的一種方式是

insert into user_settings (userid, settingsid)
select u.userid, s2.Id
from user_settings u 
join settings s on s.id=u.settingsid
join settings s2 on s2.name=s.name
where s2.appid='app2' and s.appid='app1'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM