我有兩個表,UsersSample和UsersSearching。 UsersMain是大多數可用用戶的表格。 UsersSearching是在網站上搜索過的任何用戶的表格。如何在兩個SQL表中找到匹配項?
我想確定一個來自USersSample的用戶是否已經搜索過(並且出現在UsersSearching表中)。但即使開始這個SQL查詢,我也遇到了困難。任何人都可以提出建議並指向正確的方向嗎?
我有兩個表,UsersSample和UsersSearching。 UsersMain是大多數可用用戶的表格。 UsersSearching是在網站上搜索過的任何用戶的表格。如何在兩個SQL表中找到匹配項?
我想確定一個來自USersSample的用戶是否已經搜索過(並且出現在UsersSearching表中)。但即使開始這個SQL查詢,我也遇到了困難。任何人都可以提出建議並指向正確的方向嗎?
SELECT
us.*
FROM UsersSample us
INNER JOIN UsersSearching uss ON uss.UserId = us.UserId
這將導致兩個表中存在的用戶列表。
可以使用LEFT OUTER JOIN
來確定哪些用戶在UserSearching表中的記錄:
select distinct u.UserID, us.UserID as HasSearchedUserID
from User u
left outer join UserSearching us on u.UserID = us.UserID
如果HasSearchedUserID
是NULL
,則該用戶還沒有搜查,
首先,您需要定義哪些字段用於匹配兩個表中的記錄。例如,如果有兩個表在一個共同的用戶ID字段,查詢可以使用這兩種形式中的一種:
SELECT * FROM UsersSample WHERE UserID IN (SELECT UserID FROM UsersSearching)
SELECT UsersSample.* FROM UsersSample INNER JOIN UsersSearching
ON UsersSample.UserID = UsersSearching.UserID
SELECT * FROM UsersSample WHERE EXISTS
(SELECT * FROM UsersSearching WHERE UsersSearching.UserID = UsersSample.UserID)
如果您需要使用兩個或多個列,以確定比賽中,你可以使用修改版本上面顯示的第二個和第三個選項。
UsersSearching是所有在網站上搜索的用戶的表格。
我試圖確定一個來自USersSample的用戶是否已經搜索過(並且 出現在UsersSearching表中)。
所以,我需要你的問題澄清,你想他們已經搜查時知道UserSample
被添加到UserSerching
或你認識的添加,只是想看看用戶在兩種USersSample
和UsersSearching
?如果是1st,那將比第二個SQL查詢更像測試。
SELECT UserID
FROM USersSample JOIN UserSearching
ON USersSample.UserID = UserSearching.UserID
SELECT
是你想看看在2頁不同的表,所以你需要JOIN
他們想要UserID
FROM
列(S)和一個JOIN
你需要ON
爲指針 ON [table.column]
等USerSample.UserID
並顯示結果相等=
到UserSearching.UserID
+1 - 做一個相反的操作,只需要將一個'SELECT [column] FROM UsersSample WHERE UserID NOT IN'然後用括號括起Gabriel的查詢並將'。*'改爲'.userid' 。 – JNK 2010-10-18 19:41:44
NOT IN在Jet/ACE中沒有很好的優化,並且通常無法在比較的一側或兩側使用索引。 – 2010-10-19 22:48:36