Перезапись подзапросов mysql с помощью LEFT JOIN

0

У меня есть таблица с такой структурой:

  • UID
  • с.и.д.

все целые числа. Эта таблица имитирует дружбу между двумя пользователями.

Все, что я хочу сделать, это найти такие записи, которые существуют только в одном направлении.

Например: Я хочу найти количество записей, которые имеют t1.u_id = 15, когда нет записей, которые имеют t2.s_id = 15 и t2.u_id = t1.s_id.

Таким образом, связь между двумя идентификаторами существует только один раз.

Мне показалось, что мне удалось написать правильный запрос с подзапросами, но затем я начал переписывать запрос, используя левое соединение, чтобы увеличить скорость, и теперь... ну, он не работает.

Мой запрос прямо сейчас:

SELECT * FROM `friends` AS f1 LEFT JOIN `friends` AS f2 
ON f1.user_id = f2.friend_id 
WHERE f1.friend_id=15 AND f2.user_id IS NULL

но он не работает. Пожалуйста, помогите.

NB. Я использую mysql 5, поэтому я не могу использовать инструкцию EXCEPT и все другие хорошие вещи.

  • 0
    объясните как это не работает? записи, которые он находит, что он не должен или наоборот?
Теги:

2 ответа

1
Лучший ответ

Как насчет этого?

SELECT * 
FROM `friends` AS f1 
    LEFT JOIN `friends` AS f2 ON f1.user_id = f2.friend_id AND f1.friend_id = f2.user_id
WHERE f1.friend_id=15 
    AND f2.user_id IS NULL
0

И этот?

SELECT * FROM friends f1 LEFT JOIN friends f2 ON f1.user_id = f2.friend_id WHERE f1.friend_id = 15 И f2.user_id IS NULL

  • 0
    Думаю, вы узнали, что делают тики :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню