Как получить строки из двух разных операторов SELECT с соответствующими столбцами - PullRequest
0 голосов
/ 12 февраля 2019

В моей базе данных MySQL есть таблица отношений, в которой есть столбцы follower_id и follow_id.Они представляют собой следующие действия в Instagram, например, если учетная запись с идентификатором 1 следует за учетной записью с идентификатором 2, в моей таблице будет существовать строка, где follower_id равен 1, а follow_id равен 2.

Что я хочу сделать, так этонапример, можно найти учетные записи, которые следуют как за учетной записью с идентификатором 1, так и за учетной записью с идентификатором 4.Я попытался создать временные таблицы, используя операторы SELECT, например:

CREATE TEMPORARY TABLE temp1 
SELECT follower_id FROM relationships 
WHERE followed_id = '1'

и

CREATE TEMPORARY TABLE temp2 
SELECT follower_id FROM relationships 
WHERE followed_id = '4'

, и пытался перекрестно ссылаться на две временные таблицы, но это занимает очень много времени.Есть ли более быстрый способ сделать это в MySQL?

Ответы [ 3 ]

0 голосов
/ 12 февраля 2019
SELECT follower_id FROM relationships WHERE followed_id=1 AND follower_id IN 
(SELECT follower_id FROM relationships WHERE followed_id=4)
0 голосов
/ 12 февраля 2019

Довольно простой метод:

SELECT follower_id
FROM relationships 
WHERE followed_id IN (1, 4)
GROUP BY follower_id
HAVING COUNT(*) = 2;  -- number of followed
0 голосов
/ 12 февраля 2019

Просто вы можете выбрать отдельный follower_id, используя следующий запрос: -

SELECT DISTINCT follower_id FROM relationships 
WHERE followed_id IN ('1', '4');

Надеюсь, это решит вашу проблему.

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