2011-05-05 80 views

回答

1

它插入數據與列名錶california_authors AU_ID,的au_lname,au_fname它SELECT語句select au_id, au_lname, au_fname from authors where state = 'CA'

上面的select語句爲您提供了3列的表,插入列匹配得到它的數據數。

說你有表(生日

ID |名字|生日

那麼你可以做一個插入這樣

insert birthdates (id,firstname,birthdate) select 1,'Steven',NOW()

這將插入新行與定義的值生日。

您也可以結合使用從將和在選擇

2

該行定義的值「靜態」插入數據獲取從表中的數據從SELECT查詢返回被簡單地插入,就像如果你要使用一組VALUES表達式自己指定所有行。在兩種情況下,字段數和類型都應該匹配。

是的,因爲你有一個表像ARTICLES(ID, TITLE, BODY, DATE)和你想要的DATE字段插入期間被設置爲NOW(),你可以做這樣的事情:

INSERT articles(title, body, date) 
SELECT title, body, NOW() 
FROM other_articles 

隨後的NOW()值會而不是other_articles表中的日期列。

2

插入無法執行更新 - 它只能將數據插入表中,而不更新現有數據。

它不限於靜態值。

Insert Into SomeTable (FirstName, LastName, FullName, ModifiedDate, Comment, Age) 

Select FirstName, 
     LastName, 
     FirstName + ' ' + LastName, 
     GetDate(), 
     'This is the best comment ever', 
     dbo.CustomFunctionToCalculateAge(DateOfBirth) 

From Users 

您也可以省略列聲明(但不推薦)

Insert Into Ages 
Select 10 

你應該始終確保正被插入的數據類型的列的數據類型相匹配。

+0

「插入無法執行更新」。是和不是。我已經討論了MySQL變體INSERT INTO ... ON DUPLICATE KEY UPDATE Ages = 10。儘管如此,它的用處有點不妥。 – 2011-08-04 14:28:49