Запрос на возврат результатов, только если значение не существует ни в одной строке

Как заметил Оуа, выражение оператора ({ ... }) является расширением GNU; вы не сможете это использовать. Ваше основное выражение близко к тому, что требуется, но не хватает скобок:

#define container_of(ptr, type, member) \
                      ((type *) ((char *)(ptr) - offsetof(type, member)))

Это выглядит чисто для меня. Он распространяется только через две строки для SO.

2
задан Ranch Dubois 17 January 2019 в 16:43
поделиться

2 ответа

Если вы хотите, чтобы заказы были только в таблице, вы можете использовать group by и having:

select order_id
from t
group by order_id
having sum(case when status = 'COMPLETE' then 1 else 0 end) = 0;

Если вы хотите выполнить это для всех заказов, то я предполагаю, что у вас есть orders табл. Используйте not exists:

select o.*
from orders o
where not exists (select 1
                  from orderstatuses os
                  where os.order_id = o.order_id and
                        os.status = 'COMPLETE'
                 );
0
ответ дан Gordon Linoff 17 January 2019 в 16:43
поделиться

Я думаю, что этот вопрос требует команды МИНУС.

Select distinct(order_id)
  from {table_name}
MINUS
Select distinct(order_id)
  from (table_name}
where status = 'Complete'

Вы можете взять выходные данные из этого SQL и использовать их для дальнейших запросов, при необходимости.

0
ответ дан APC 17 January 2019 в 16:43
поделиться
Другие вопросы по тегам:

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