我有两个表,UsersSample和UsersSearching。 UsersMain是大多数可用用户的表。 UsersSearching是在网站上搜索过的所有用户的表格。
我正在尝试确定来自USersSample的用户是否已搜索(并显示在UsersSearching表中)。但是我甚至难以开始这个SQL查询。任何人都可以建议并指出我正确的方向吗?
答案 0 :(得分:5)
SELECT
us.*
FROM UsersSample us
INNER JOIN UsersSearching uss ON uss.UserId = us.UserId
这将导致BOTH表中存在的用户列表。
答案 1 :(得分:0)
您可以使用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
,则该用户尚未搜索
答案 2 :(得分:0)
首先,您需要定义用于匹配两个表中记录的字段。例如,如果两个表中有一个共同的UserID字段,您的查询可以使用以下两种形式之一:
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)
如果您需要使用两列或更多列来确定匹配项,则可以使用上面显示的第二个和第三个选项的修改版本。
答案 3 :(得分:0)
UsersSearching是在网站上搜索过的所有用户的表格。
我正在尝试确定来自USersSample的用户是否已搜索过(和 出现在UsersSearching表中。
因此,我需要澄清您的问题,您想知道UserSample
是否在搜索时添加到UserSerching
,或者您知道是否已添加,并且只想查看两者中的用户USersSample
和UsersSearching
?如果是1st,那将是一个测试事物,而不是SQL Query for 2nd。
SELECT UserID
FROM USersSample JOIN UserSearching
ON USersSample.UserID = UserSearching.UserID
SELECT
是您想要的列UserID
FROM
您希望查看2个不同的表,因此您需要JOIN
这些表,并且JOIN
需要ON
作为指针
ON [table.column]
依据USerSample.UserID
显示结果=
与UserSearching.UserID