![](/img/trans.png)
[英]How do I insert some columns of a table into a new record with the same value of other columns?
[英]How do i insert new record in this table?
我很抱歉這個菜鳥問題。
有 2 張桌子:較小的一張來自較大的一張。 如何將新記錄插入更大的表中?
INSERT INTO people (lname, fname, city, age, salary) VALUES (' Doe','John','Paris', '25','1000$' );
但更大的表包含城市作為數字。 我應該如何插入“巴黎”? 我應該事先知道它的號碼嗎? 但是“巴黎”不在城市(較小的)表中? 記錄如何插入到更大的(人)表中?
編輯:
添加了IF
塊來檢查巴黎。
IF NOT EXISTS (SELECT 1 FROM City WHERE City = 'Paris')
Insert INTO City (City) VALUES ('Paris')
DECLARE @Cid int = (SELECT CityID FROM City WHERE City = 'Paris')
INSERT INTO people (lname, fname, city, age, salary)
VALUES (' Doe','John', @cid, '25','1000$' )
我顯然對city
表的結構做了一個假設。
您還可以使用@city
變量對其進行參數化,並在代碼中的任何位置將其替換為'Paris'
。
編輯:采用城市表中現有條目的解決方案。 正如我在評論中所寫,可以省略事務(例如,作為存儲過程運行時)
BEGIN TRANSACTION
DECLARE @city_id INT
SELECT @city_id=id FROM city WHERE name='Paris'
IF @city_id IS NULL
BEGIN
INSERT INTO city (name) VALUES ('Paris')
SET @city_id=@@IDENTITY
END
INSERT INTO people (lname, fname, city, age, salary) VALUES ('Doe','John',@city_id, '25','1000$' );
END TRANSACTION
在插入到 people 表中,city 列的值應該是您希望此人鏈接到的城市編號 - 因此在您引用的示例中,將“Paris”替換為巴黎的城市編號。
如果您想創建一個新的人員記錄,其中城市表中尚不存在,您需要先插入到城市表中,獲取創建城市的編號,然后在插入中使用它到人桌。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.