場景:我有兩張桌子。表 A 和表 B 都具有完全相同的列。我的任務是創建一個主表。我需要確保主表中沒有重復項,除非它是新記錄。
問題:建表的人沒有為表分配主鍵。
嘗試:我嘗試運行 INSERT INTO WHERE NOT EXISTS 查詢(以下示例不是我運行的實際查詢)
問題:下面的查詢部分 WHERE t2.id = t1.id讓我感到困惑,我的表有很多列,沒有像我說的那樣沒有主鍵來錨定匹配的 id 列,所以,在我所擁有的只是沒有主值的情況下鍵,我怎樣才能只追加新記錄?另外,也許我正在以錯誤的方式解決這個問題,但是通過 TSQL 是否有任何其他功能或選項值得考慮?也許不是 INSERT INTO 陳述句或其他什么?我的 SQL 技能還沒有那么先進,所以我不是在尋求解決方案,但也許是值得考慮的想法或其他方法?歡迎任何想法。
INSERT INTO TABLE_2
(id, name)
SELECT t1.id,
t1.name
FROM TABLE_1 t1
WHERE NOT EXISTS(SELECT id
FROM TABLE_2 t2
WHERE t2.id = t1.id)
uj5u.com熱心網友回復:
如果我正確理解您的問題,您需要通過將條件 t2.id = t1.id 更改為您擁有的任何列來修改您發布的 SQL 示例。
假設您的 2 個表具有名稱和品牌列,并且您不希望重復,只需將示例更改為:
WHERE t2.name = t1.name AND t2.brand = t1.brand
這將確保您不會在表 1 中的表 2 中插入重復的行。您必須確保 where 條件包含所有列(您說表模式是相同的)。
此外,上面的代碼示例將所有內容復制到表 2 中——但你說你想要一個主表——所以你必須將其更改為插入主表,而不是表 2。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/443361.html
標籤:tsql
上一篇:從dim_table獲取所有日期加入fact_table
下一篇:SQL:從2個條件中選擇MAX值
