sql server 的T-SQL 學習筆記(二)--- 解決union select插入多行數據過濾數據(union all)

學生表

use studentSys
go
--創建學生表Student
if exists (select * from sys.objects where name ='Student') drop table studentSys
go
create table Student(
  stuId int primary key identity,
  stuName varchar(50) not null,
  stuBornDay date not null,
  stuSex nchar(1) not null,
  stuAddress varchar(200),
  classId int foreign key references Classes(classId)
)

主鍵自增情況下插入多行數據,插入相同數據時候,在這裏插入三條,執行時候只顯示 (2 行受影響) 這明顯就不符合我預期想要的結果

 -- 插入多行數據(備份)
    insert into Student (stuName,stuBornDay,stuAddress,stuSex,classId) 
      select '陳聰',GETDATE(),'湖北武漢','男',1
      union select '張三',GETDATE(),'湖北武漢','女',2
      union select '張三',GETDATE(),'湖北武漢','女',2

解決方法:
因爲在插入相同數據時候 union會自動過濾相同數據

UNION 操作符用於合併兩個或多個 SELECT 語句的結果集。
默認地,UNION 操作符選取不同的值。如果允許重複的值,請使用 UNION ALL

那麼上面的insert語句可以修改成這樣

 insert into Student (stuName,stuBornDay,stuAddress,stuSex,classId) 
      select '陳聰',GETDATE(),'湖北武漢','男',1
      union all select '張三',GETDATE(),'湖北武漢','女',2
      union all select '張三',GETDATE(),'湖北武漢','女',2

關於unionunion all 的詳細用法可以參見w3c上的詳解,傳送門 : SQL UNION 和 UNION ALL 操作符

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章