У меня есть две таблицы A и B, в которых я хотел бы выбрать данные, в которых обе таблицы являются общими в столбце (user_id) и не похожи в другом столбце (A.columnX != B.columnY).
На самом деле, мне бы хотелось, чтобы соединения SQL были противоположны. Кто-нибудь может мне помочь?
просто используйте что-то вроде этого SELECT * FROM A JOIN BON A.id = B.user_id AND A.columnX <> B.columnY
Выборочные данные и желаемые результаты действительно помогут.






Вы можете предоставить запрос на соединение как:
select <<Column list>> from table1 a, table2 b where a.userid=b.userid and a.columnX!=b.columnY;
Спасибо за ответ. У меня разные пользователи в обеих таблицах, и я должен сказать, где a.userid или b.userid = M, могу ли я добавить это в конец SQL?
Что именно ты хочешь?
Совет сегодня: переходите на современный, явный синтаксис JOIN! Легче писать (без ошибок), легче читать и поддерживать, а также проще преобразовать во внешнее соединение, если это необходимо.
Если вы хотите отфильтровать соединение на основе дальнейшей логики, просто используйте предложение 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), если бы это было легче выразить таким образом. Эти две формы синтаксически идентичны и обрабатываются оптимизатором запросов одинаково - не имеет значения, какую форму вы используете.
Когда вы описываете вопрос, вам кажется, что вам нужен 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 в корреляционном предложении.
Возможный дубликат Как выбрать результаты SQL на основе нескольких таблиц