Как выбрать все строки в одной таблице, которые не отображаются в другой?
Таблица 1:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
Таблица 2:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
+-----------+----------+------------+
Пример вывода для строк в Table1, которых нет в Table2:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
Может, должно сработать что-то вроде этого:
SELECT * FROM Table1 WHERE * NOT IN (SELECT * FROM Table2)
mysql
sorting
unique
database-table
Кристофер Рапцевич
источник
источник
Вам нужно сделать подвыбор на основе имени столбца, а не
*
.Например, если у вас есть
id
поле, общее для обеих таблиц, вы можете:Дополнительные примеры см. В синтаксисе подзапроса MySQL .
источник
EXISTS
поможет вам...источник
Стандартное LEFT JOIN может решить проблему и, если поля при объединении проиндексированы,
также должно быть быстрее
источник
WHERE t2.Birthdate Is Null
вместоAND t1.Birthdate = t2.Birthdate
?Table2
!Пытаться:
источник
Попробуйте этот простой запрос. Работает отлично.
источник
Это сработало для меня в Oracle:
источник
источник