Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помощь с запросом  [new]
BKV88
Member

Откуда: Москва
Сообщений: 243
Добрый день!
Нужно найти те id где отсутствует поле thumb=111111111111
Есть запрос

CREATE TABLE #t
(
id int null
,thumb varchar(50)
)


insert into #t values (1,'111111111111')
insert into #t values (1,'222222222222')
insert into #t values (1,'333333333333')
insert into #t values (1,'444444444444')
insert into #t values (2,'111111111111')
insert into #t values (2,'555555555555')
insert into #t values (2,'666666666666')
insert into #t values (3,'777777777777')
insert into #t values (3,'888888888888')

;WITH cte ([id],[thumb])
AS
(
select id,thumb from #t
where  thumb='111111111111'
group by thumb,id
)


select distinct id from #t
where id not in (select id from cte)

drop table #t



Выводится правильный результат.
Просьба оценить корректность его написания если скажем применять его к другим записям.
21 ноя 14, 12:38    [16884593]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с запросом  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
select id from #t where thumb<>'111111111111'

BKV88
Нужно найти те id где отсутствует поле thumb=111111111111
21 ноя 14, 12:40    [16884608]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с запросом  [new]
BKV88
Member

Откуда: Москва
Сообщений: 243
Maxx,

Тогда выводятся так же запись с id 1, хотя там присутствует thumb=111111111111
21 ноя 14, 12:42    [16884619]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с запросом  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20609
А за каким хреном группировка в запросе cte?
21 ноя 14, 12:42    [16884620]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104760
BKV88
Просьба оценить корректность его написания если скажем применять его к другим записям.

Синтаксис - 100
Реализация - 0

CREATE TABLE #t
(
id int null
,thumb varchar(50)
)


insert into #t values (1,'111111111111')
insert into #t values (1,'222222222222')
insert into #t values (1,'333333333333')
insert into #t values (1,'444444444444')
insert into #t values (2,'111111111111')
insert into #t values (2,'555555555555')
insert into #t values (2,'666666666666')
insert into #t values (3,'777777777777')
insert into #t values (3,'888888888888')
insert into #t values (NULL,'111111111111')

;WITH cte ([id],[thumb])
AS
(
select id,thumb from #t
where  thumb='111111111111'
group by thumb,id
)


select distinct id from #t
where id not in (select id from cte)

drop table #t
21 ноя 14, 12:43    [16884627]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с запросом  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20609
SELECT DISTINCT t1.id
FROM #t t1
LEFT JOIN #t t2 ON (t1.id = t2.id AND t1.thumb = t2.thumb AND t2.thumb = '111111111111')
WHERE t2.id IS NULL
21 ноя 14, 12:48    [16884664]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с запросом  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
BKV88,

select id from #t
except
select id from #t where thumb = '111111111111'
21 ноя 14, 12:52    [16884691]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с запросом  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20609
Сорри, на автомате перестарался.
SELECT DISTINCT t1.id
FROM #t t1
LEFT JOIN #t t2 ON (t1.id = t2.id AND t2.thumb = '111111111111')
WHERE t2.id IS NULL
21 ноя 14, 12:54    [16884710]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с запросом  [new]
BKV88
Member

Откуда: Москва
Сообщений: 243
Всем спасибо.
С разностью запрос попонятнее выглядит
21 ноя 14, 12:59    [16884756]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с запросом  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
select distinct id from #t t
where not exists(select * from #t where id =t.id and thumb = '111111111111')
21 ноя 14, 13:02    [16884783]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с запросом  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
BKV88
Maxx,

Тогда выводятся так же запись с id 1, хотя там присутствует thumb=111111111111

недосмотрел что у вас ид не уникально
21 ноя 14, 13:10    [16884842]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с запросом  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20609
BKV88
С разностью запрос попонятнее выглядит

Хорошо тому живётся, у кого 2005 и старше :(
21 ноя 14, 13:22    [16884917]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с запросом  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Akina
BKV88
С разностью запрос попонятнее выглядит

Хорошо тому живётся, у кого 2005 и старше :(
Вариант с NOT EXISTS() - самый нормальный из всех.
21 ноя 14, 13:44    [16885085]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с запросом  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
iap
Вариант с NOT EXISTS() - самый нормальный из всех.

и доступен еще с 7-ки ....точно в 6.5 не помню просто
21 ноя 14, 13:48    [16885128]     Ответить | Цитировать Сообщить модератору
 Re: Помощь с запросом  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Maxx
iap
Вариант с NOT EXISTS() - самый нормальный из всех.

и доступен еще с 7-ки ....точно в 6.5 не помню просто
Да во всех версиях доступен!
http://savage.net.au/SQL/sql-92.bnf.html#exists predicate
21 ноя 14, 13:51    [16885155]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить