Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.117.216.36] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
Мне надо выбрать записи из таблицы А при этом в эту выборку не должны попасть аналогичные записи из таблицы Б
К примеру Таблица tbl1 Поля: id (int) name (text) Таблица tbl2 Поля: id (int) Содержат: tbl1 id name 1 Первыя запись 2 Вторая запись 3 Третья запись 4 И т.д. 5 И т.п. tbl2 id 3 5 При выборке должно получиться id name 1 Первыя запись 2 Вторая запись 4 И т.д. Пишу для этого SELECT id,name FROM tbl1 WHERE id<>(SELECT id FROM tbl2) А оно мне отвечает, что вложенный подзапрос должен вертать ТОЛЬКО одну запись!!! Когда в tbl2 ТОЛЬКО одна запись, всё выглядит как надо... Это что за блин? Как эту задачку решить? Подскажите плз.... Спасибо. |
Сообщ.
#2
,
|
|
|
если не одну -- пиши not in (вложенный запрос)
Хотя я бы сделал так: select * from A where not exists(select * from B where B.id = A.id) или select distinct A.* from A left join B on A.id=B.id where B.id is null |
Сообщ.
#3
,
|
|
|
Здорово!
Заработало!!! ) С меня пиво! thanks! |
Сообщ.
#4
,
|
|||
|
Или
|