Как найти совпадения в двух таблицах SQL? - PullRequest
0 голосов
/ 18 октября 2010

У меня есть две таблицы: UsersSample и UsersSearching. UsersMain - это таблица большинства доступных пользователей. UsersSearching - это таблица всех пользователей, которые искали на сайте.

Я пытаюсь определить, выполнил ли пользователь из USersSample поиск (и отображается ли он в таблице UsersSearching). Но мне трудно даже начать этот запрос SQL. Кто-нибудь может посоветовать и указать мне правильное направление?

Ответы [ 4 ]

5 голосов
/ 18 октября 2010
SELECT
    us.*
FROM UsersSample us
INNER JOIN UsersSearching uss ON uss.UserId = us.UserId

это приведет к списку пользователей, которые существуют в ОБАХ таблицах.

0 голосов
/ 24 октября 2014

UsersSearching - это таблица всех пользователей, которые искали на сайте.

Я пытаюсь определить, искал ли пользователь из USersSample (и появится в таблице поиска пользователей).

Итак, мне нужно уточнить вашу проблему, вы хотите знать, добавляется ли UserSample к UserSerching, когда они выполнили поиск или вы знаете, что добавлялись, и просто хотите увидеть, какие пользователи есть в обоих USersSample И UsersSearching? Если 1-й, то это будет скорее тестирование, чем SQL-запрос для 2-го.

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

0 голосов
/ 18 октября 2010

Во-первых, вам нужно определить, какие поля используются для сопоставления записей в двух таблицах.Например, если в обеих таблицах есть общее поле 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)

Если вам нужно использовать два или более столбцов для определения совпадений, вы можете использоватьверсии второго и третьего вариантов показаны выше.

0 голосов
/ 18 октября 2010

Вы можете использовать LEFT OUTER JOIN, чтобы определить, какие пользователи имеют записи в таблице поиска пользователей:

select distinct u.UserID, us.UserID as HasSearchedUserID
from User u
left outer join UserSearching us on u.UserID = us.UserID

Если HasSearchedUserID равно NULL, то этот пользователь не выполнил поиск,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...