У меня есть следующие table1, в котором id
может появиться несколько раз, и каждый раз с уникальным name
и то же самое для name
, она может появиться несколько раз и каждый раз с другим id
.SQL объединить две таблицы и получить уникальные значения из одной таблицы на основе другой
id name
---------
A2 B6
A3 B2
A3 B400
A5 B100
A7 B200
A8 B300
A8 B2
A8 B3
и вот table2, в котором все id
с от table1 существуют, но не все name
с. И каждый id
имеет surname
.
id name surname
-------------------
A1 Lastname1
A2 Lastname2
A3 B1 Lastname3
A4 Lastname4
A5 B2 Lastname5
A6 Lastname6
A7 B3 Lastname7
A8 B4 Lastname8
A9 Lastname9
A10 B6 Lastname10
вот результат запроса: - первый столбец: список всех уникальных id
с от table1 PLUS список всех name
с в table1, которые не найдены в name
колонка таблица2. - вторая колонка: surname
из каждого элемента в id
столбце таблицы результатов, взятой из table2, всех id
с от table1 имеет соответствующую фамилию, но если name
от table1 не был найден в table2, тогда мы помещаем то же самое name
как фамилия. - третья колонка: если id
или name
из table1 был найден в table2, то статус будет НАЙДЕНО, однако если name
от table1 не был найден, он получит НЕ НАЙДЕНО
id surname status
---------------------------
A2 Lastname2 FOUND
A3 Lastname3 FOUND
A5 Lastname5 FOUND
A7 Lastname7 FOUND
A8 Lastname8 FOUND
A10 Lastname10 FOUND
B100 B100 NOT FOUND
B200 B200 NOT FOUND
B300 B300 NOT FOUND
B400 B400 NOT FOUND
вы можете использовать 'влево join' – Rahul
Эта строка не имеет смысла - 'A2 Lastname2 FOUND' - каковы правила« разрешить »это одно из них? – Hogan
Это немного запутанно. Вы можете начать, избегая использования дескриптора столбца 'id'. Большинство из нас думали бы о 'id' как уникальном и' AUTO_INCREMENT'. Затем дайте таблицам описательные имена о том, что они представляют вместо «table1» «table2». Даже использование имени в качестве имени может быть немного запутанным. – ebyrob