Напротив соединения в SQL с выбором 2 столбцов?

У меня есть две таблицы A и B, в которых я хотел бы выбрать данные, в которых обе таблицы являются общими в столбце (user_id) и не похожи в другом столбце (A.columnX != B.columnY).

На самом деле, мне бы хотелось, чтобы соединения SQL были противоположны. Кто-нибудь может мне помочь?

Возможный дубликат Как выбрать результаты SQL на основе нескольких таблиц

Nick Parsons 02.07.2018 07:49

просто используйте что-то вроде этого SELECT * FROM A JOIN BON A.id = B.user_id AND A.columnX <> B.columnY

janith1024 02.07.2018 08:27

Выборочные данные и желаемые результаты действительно помогут.

Gordon Linoff 02.07.2018 13:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
112
3

Ответы 3

Вы можете предоставить запрос на соединение как:

select <<Column list>> from table1 a, table2 b where a.userid=b.userid and a.columnX!=b.columnY;

Спасибо за ответ. У меня разные пользователи в обеих таблицах, и я должен сказать, где a.userid или b.userid = M, могу ли я добавить это в конец SQL?

Shokouh Dareshiri 02.07.2018 07:54

Что именно ты хочешь?

codeLover 02.07.2018 07:55

Совет сегодня: переходите на современный, явный синтаксис JOIN! Легче писать (без ошибок), легче читать и поддерживать, а также проще преобразовать во внешнее соединение, если это необходимо.

jarlh 02.07.2018 08:55

Если вы хотите отфильтровать соединение на основе дальнейшей логики, просто используйте предложение WHERE:

SELECT
    table_a.something,
    table_a.something_else,
    table_b.another_thing
FROM table_a
INNER JOIN table_b
    ON table_b.user_id = table_a.user_id
WHERE
    table_a.column_x != table_b.column_y;

Вы также можете переместить условие WHERE в предложение ON (используя AND), если бы это было легче выразить таким образом. Эти две формы синтаксически идентичны и обрабатываются оптимизатором запросов одинаково - не имеет значения, какую форму вы используете.

Erayd 02.07.2018 07:52

Когда вы описываете вопрос, вам кажется, что вам нужен NOT EXISTS:

SELECT a.something, a.something_else,
       b.another_thing
FROM table_a a INNER JOIN
     table_b b
     ON b.user_id = a.user_id
WHERE NOT EXISTS (SELECT 1
                  FROM table_b b2
                  WHERE b2.user_id = b.user_id and
                        b2.column_y = a.column_x
                 );

Неясно, нужно ли вам сравнение user_id в корреляционном предложении.

Другие вопросы по теме