簡體   English   中英

SQL Server將一個表的行與另一表的所有行進行比較

[英]SQL Server Compare rows of one table with all rows of other table

我有2個表,其中包含名字,姓氏,出生日期。 第一個表的所有列的數據類型均為varchar,第二個表的數據類型為varchar(50),varchar(50),datetime數據類型。

Ex:
1st table 
fname surname dob
a       b      04/12/1948
a       b      05/08/1984

 2nd table
fname surname dob
a       b      05/08/1984
a       b      04/12/1948

當我做相交不匹配的裝飾(可能是數據類型的b'ze),除了給我結果。

有沒有辦法從表1中選擇所有記錄,並與表2中的記錄匹配呢?

非常感謝的任何幫助

SELECT fname, surname, CAST(dob AS DATETIME) AS dob FROM table1
INTERSECT
SELECT fname, surname, dob FROM table2

EXCEPTINTERSECT均可

Declare @tblA AS TABLE(
    FirstName VARCHAR(50),
    SurName VARCHAR(50),
    Dob VARCHAR(50)
)

Declare @tblB AS TABLE(
    FirstName VARCHAR(50),
    SurName VARCHAR(50),
    Dob Date
)

INSERT INTO @tblA VALUES
('a','b','04/12/1948'),
('a','b','05/08/1948')

INSERT INTO @tblB VALUES
('a','b','04/12/1948'),
('a','b','05/09/1948')

SELECT
    *
FROM @tblA
INTERSECT
SELECT
    *
FROM @tblB

SELECT
    *
FROM @tblA
EXCEPT
SELECT
    *
FROM @tblB

輸出:

在此處輸入圖片說明

使用此查詢。

Select * from table1 as a
Inner join table2 as b
on a.fname = b.fname and a.surname = b.surname and cast(a.dob as date)=b.dob
SELECT * FROM #Table1 JOIN #Table2 ON #Table2.dob = CONVERT(DATETIME,#Table1.dob,101)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM