powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / sql - запрос
11 сообщений из 11, страница 1 из 1
sql - запрос
    #38507566
Oleg8000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Есть таблица в которую заносятся пользовательские лайки
id user_id liked_id112213321
user_id - кто лайкает
liked_id - кого лайкнули

Можно ли как-то в одном запросе, сделать выборку только тех юзеров, которые взаимно понравились друг другу?
т.е. для примера выше, должна выбраться только первая запись (id=1)
...
Рейтинг: 0 / 0
sql - запрос
    #38507578
а почему именно первая, а не третья? ;) Что за дискриминация?
...
Рейтинг: 0 / 0
sql - запрос
    #38507580
но вообще, смотреть в сторону EXISTS-подзапроса или самообъединения таблицы...
...
Рейтинг: 0 / 0
sql - запрос
    #38507582
Oleg8000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подразумевается, что ищем взаимнопонравившихся для юзера 1
но в принципе это уже ньюнсы, можно и третью запись
...
Рейтинг: 0 / 0
sql - запрос
    #38507618
Oleg8000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
такой запрос вроде показывает то что нужно

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT *
FROM `likes` l1
WHERE user_id
IN (
SELECT liked_id
FROM `likes` l2
WHERE user_id =1
)



но что-то мне подсказывает, что на больших данных будут дикие тормоза.
Может кто-то подскажет другие варианты запроса?
...
Рейтинг: 0 / 0
sql - запрос
    #38507676
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg8000,

Код: sql
1.
2.
3.
SELECT *
FROM `likes` l1
WHERE user_id = 1



Этот запрос аналогичен вашему, но работает быстрее
...
Рейтинг: 0 / 0
sql - запрос
    #38507683
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посоветовали ведь уже:Добрый Э - Эхно вообще, смотреть в сторону EXISTS-подзапроса или самообъединения таблицы...
Код: sql
1.
2.
3.
4.
select u.*
from likes u
join likes t on t.user_id=u.liked_id and t.liked_id=u.user_id
where u.u.user_id < u.liked_id
...
Рейтинг: 0 / 0
sql - запрос
    #38507688
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
select t1.* 
from likes t1, likes t2
where (t1.user_id, t1.liked_id) = (t2.liked_id, t2.user_id);
...
Рейтинг: 0 / 0
sql - запрос
    #38507753
Oleg8000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем откликнувшимся спасибо!
Запрос, который дал Akina кажется будет самым шустрым
...
Рейтинг: 0 / 0
sql - запрос
    #38508266
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg8000Здравствуйте.

Есть таблица в которую заносятся пользовательские лайки
id user_id liked_id112213321
user_id - кто лайкает
liked_id - кого лайкнули

Можно ли как-то в одном запросе, сделать выборку только тех юзеров, которые взаимно понравились друг другу?
т.е. для примера выше, должна выбраться только первая запись (id=1)

Код: sql
1.
2.
3.
select distinct user_id
from LIKES l
where exists( select * from LIKES l1 where l1.user_id = l.liked_id and l1 liked_id = l.user_id )
...
Рейтинг: 0 / 0
sql - запрос
    #38508389
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivOleg8000Можно ли как-то в одном запросе, сделать выборку только тех юзеров, которые взаимно понравились друг другу ?
Код: sql
1.
2.
3.
select distinct user_id
from LIKES l
where exists( select * from LIKES l1 where l1.user_id = l.liked_id and l1 liked_id = l.user_id )

Этот запрос не показывает взаимности :)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / sql - запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]