table1 (идентификатор, имя)
table2 (идентификатор, имя)
Запрос:
SELECT name
FROM table2
-- that are not in table1 already
источник
table1 (идентификатор, имя)
table2 (идентификатор, имя)
Запрос:
SELECT name
FROM table2
-- that are not in table1 already
SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL
Q : что здесь происходит?
A : Концептуально, мы выбираем все строки table1
для каждой строки, в которой мы пытаемся найти строку table2
с одинаковым значением для name
столбца. Если такой строки нет, мы просто оставляем table2
часть нашего результата пустой для этой строки. Затем мы ограничиваем наш выбор, выбирая только те строки в результате, где соответствующая строка не существует. Наконец, мы игнорируем все поля из нашего результата, кроме name
столбца (который, как мы уверены, существует, из table1
).
Хотя это может быть не самый производительный метод, возможный во всех случаях, он должен работать практически в каждом механизме баз данных, когда-либо пытающихся реализовать ANSI 92 SQL
Вы можете сделать
или
Посмотрите этот вопрос для 3 методов для достижения этой цели
источник
У меня недостаточно очков репутации, чтобы проголосовать за второй ответ. Но я должен не согласиться с комментариями на верхний ответ. Второй ответ:
Является ли FAR более эффективным на практике. Я не знаю почему, но я работаю с 800k + записями, и разница огромна с преимуществом, полученным во втором ответе, опубликованном выше. Просто мои 0,02 доллара
источник
Это чистая теория множеств, которой вы можете достичь с помощью
minus
операции.источник
https://www.cloudways.com/blog/how-to-join-two-tables-mysql/
источник
Остерегайтесь ловушек. Если поле
Name
вTable1
содержит NULLS вы в сюрпризы. Лучше это:источник
Вот что сработало лучше для меня.
Это было более чем в два раза быстрее, чем любой другой метод, который я пробовал.
источник
Вы можете использовать
EXCEPT
в mssql илиMINUS
в oracle, они идентичны согласно:http://blog.sqlauthority.com/2008/08/07/sql-server-except-clause-in-sql-server-is-similar-to-minus-clause-in-oracle/
источник
Это работа для меня
источник
Смотрите запрос:
Концептуально было бы: выборка соответствующих записей в подзапросе, а затем в основном запросе выборка записей, которые не находятся в подзапросе.
источник
Я собираюсь сделать репост (поскольку я еще не достаточно крутой, чтобы комментировать) в правильном ответе .... на тот случай, если кто-то еще подумает, что лучше объяснить.
И я видел синтаксис в FROM, нуждающийся в запятых между именами таблиц в mySQL, но в sqlLite казалось, что он предпочитает пробел.
Суть в том, что когда вы используете неверные имена переменных, это оставляет вопросы. Мои переменные должны иметь больше смысла. И кто-то должен объяснить, почему нам нужна запятая или нет запятой.
источник
Если вы хотите выбрать конкретного пользователя
tent_npk
Является первичным ключом пользователяисточник