LINUX.ORG.RU

Вопрос по SQL


0

0

Есть две таблицы

table1
+---------+
| id |
+---------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
+---------+

table2
+---------+---------+
| id | value |
+---------+---------+
| 2 | фывафыва|
| 3 | фывафыва|
| 5 | аааавав |
| 6 | впрвар |
| 8 | реврв |
| 9 | var |
| 10 | var |
+---------+---------+

Как из первой таблицы выбрать те значения, которых нет во второй.
Надо сделать средствами SQL, используется MySQL.
Помогите, а то замучился уже и так и сяк пробовал,и LEFT JOIN
пытался приспособить не могу ничего придумать.

anonymous

Ответ на: комментарий от no-dashi

Сам спросил, сам ответил:

SELECT table1.id FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL

У меня вложенные селекты не поддерживаются :( select * from table1 where id not in (select id from table2) ???

anonymous
()
Ответ на: комментарий от Selecter

union это немного из другой оперы, это объединение множеств,
а мне нужно дополнение, я уже написал как решил проблему.

anonymous
()
Ответ на: комментарий от Pi

>а "union all" подошёл бы?

Я не знаю что это такое. Всем спасибо.

anonymous
()
Ответ на: комментарий от Pi

>а "union all" подошёл бы?

Ну при чем тут UNION?

То, что нужно в данной ситуации, называется EXCEPT. См. любую правильную книжку по началам SQL.

anonymous
()
Ответ на: комментарий от anonymous

>То, что нужно в данной ситуации, называется EXCEPT

select id from table1
except
select id from table2

Согласитесь, что это более читаемо (и более портабельно), чем авторский ужас с LEFT JOIN и NULL.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.