war76
@war76

Как сделать 2 select запроса sql?

Добрый день
Необходимо сделать 2 select запроса, связанных между собой
к примеру: Select * from [TABLE1] where user_id < {id} - здесь я получаю записи с user_id меньше какого-то значения
далее мне надо в другой таблице посмотреть, есть ли в ней выбранные в первом запросе user_id и если есть, то исключить их

соответственно на выходе получить список записей, у который user_id < id по первой таблице и эти выбранные user_id не присутствуют во второй таблице

как это лучше реализовать?
  • Вопрос задан
  • 2007 просмотров
Пригласить эксперта
Ответы на вопрос 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега MySQL
select t1.*
from table1 as t1
left join table2 as t2 on t1.user_id = t2.user_id
where t1.user_id < 10 and t2.user_id is null
Ответ написан
Комментировать
Melkij
@Melkij
PostgreSQL DBA
Select * from [TABLE1] t1 where user_id < {id} and not exists (select 1 from [another_table] t2 where t1.user_id = t2.user_id)

Или
Select * from [TABLE1] t1 left join [another_table] t2 using(user_id) where user_id < {id} and t2.user_id is null

Второй, возможно, эффективнее. Но надо смотреть.
Ответ написан
Комментировать
chlp
@chlp
фулстек
соответственно на выходе получить список записей, у который user_id < id по первой таблице и эти выбранные user_id не присутствуют во второй таблице

К моменту выдачи результата вы уже "исключите" записи из второй таблицы, а следовательно вас устроят все записи user_id < id по первой таблице. Чтобы избежать этого, вы должны либо завести временную таблицу, куда запихнете результат до выполнения исключения, либо сначала 1м запросом верните рузультат до исключения, запомните его в программе, затем 2м запросом исключите.

---

Если вопрос был в том, как составить запрос, используя данные 2х таблиц, то www.mysql.ru/docs/man/JOIN.html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы