Ms-Access

比較兩行並找出它們之間的差異 第二列中的哪一個?

  • January 28, 2017

我有一個包含以下數據的表:

ID      Name       LastName
1      William     Johns
2      John        Adam
4      William     Smith
3      Mark        Stephan 

我想查找所有名稱相同但姓氏不同的記錄。所以結果將是這樣的:

ID      Name       LasName
1       William     Johns
2       William     Smith

什麼是MS。訪問查詢或方法來查找所有這些記錄?

你可以這樣改寫它:

返回具有相同Name和不同的另一行的每一行LastName

如果您熟悉 EXISTS 謂詞,這很容易轉換為 SQL:

SELECT
 *
FROM
 YourTable AS t1
WHERE
 EXISTS
 (
   SELECT
     *
   FROM
     YourTable AS t2
   WHERE
     t2.Name = t1.Name
     AND t2.LastName <> t1.LastName
 )
;

假設沒有重複的 (Name, LastName) 對,另一種方法如下。

首先選擇所有多次出現的名稱,並從中創建一個查詢。

這可以通過 Access GUI 通過以下方式完成:

名稱出現多次的設計視圖

完成此操作後,創建另一個查詢,JOINs該查詢與原始表一起使用Name,用作公共列:

具有多個名稱和姓氏的設計視圖

這就是你最終得到的(從你的數據開始)

數據視圖名稱/姓氏

對應的SQL:

NamesThatAppearMultipleTimes詢問:

SELECT t.Name
FROM t
GROUP BY t.Name
HAVING (((Count(t.ID))>1));

NamesThatAppearMultipleTimes-and-LastNames

SELECT t.ID, t.Name, t.LastName
FROM NamesThatAppearMultipleTimes 
    INNER JOIN t ON NamesThatAppearMultipleTimes.Name = t.Name
ORDER BY t.Name, t.LastName;

引用自:https://dba.stackexchange.com/questions/161738