[英]SQL - insert row values from second column ( to new table as column data)
[英]Insert new row of data in SQL table if the 2 column values do not exist
我有一個 PostgreSQL 表與列的interactions
AAId, IDId, S, BasicInfo, DetailedInfo, BN
AAID
和IDId
是引用其他表的值的 FK。
ID
表中大約有 1540 行, AA
表中大約有 12 行。
目前在interactions
表中,AAId 值只有大約 40 行AAId value = 12
我想為所有缺失的IDId
值插入一行。
我已經搜索過,但找不到插入這樣的行的答案。 我對 SQL 並不過分自信,我可以做基礎,但這有點超出我的能力范圍。
澄清一下,我想執行一種循環,其中,
for each IDId from 1-1540,
if (the row with AAId = 12 and IDId(current IDId in the loop does not exist)
insert a new row with,
AAId = 12,
IDId = current IDId in the loop,
S = 1,
BasicInfo = Unlikely
DetailedInfo = Unlikely
SQL有沒有辦法做到這一點?
是的,這是可能的。 在向 Postgres 中的表插入數據時,可以使用來自不同表的數據。 在您的特定示例中,只要您在interactions
中具有正確的主鍵/唯一鍵( AAId
和IDId
的組合),以下插入就應該有效:
INSERT INTO interactions (AAId, IDId, S, BasicInfo, DetailedInfo, BN)
SELECT 12, ID.ID, 1, 'Unlikely', 'Unlikely'
FROM ID
ON CONFLICT DO NOTHING;
ON CONFLICT DO NOTHING
根據AAId
和IDId
的組合,保證查詢在嘗試插入已經存在的行時不會失敗。
如果您在interactions
中沒有正確的主鍵/唯一鍵,則必須過濾要手動插入的 ID:
INSERT INTO interactions (AAId, IDId, S, BasicInfo, DetailedInfo, BN)
SELECT 12, ID.ID, 1, 'Unlikely', 'Unlikely'
FROM ID
WHERE NOT EXISTS (
SELECT * FROM interactions AS i
WHERE i.AAId = 12 AND i.IDId = ID.ID
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.