Есть ли способ запросить указанную c точку данных, если она существует, в противном случае запросить все остальное? - PullRequest
1 голос
/ 07 апреля 2020

Скажем, у меня есть таблица со столбцом «Имена» и значениями «Майк», «Джон», «Келли» и «Тина». Каждый день значения могут меняться.

Как бы я структурировал запрос так, чтобы, если в таблице было имя «Tina», она отображала только «Tina», но если в ней не было «Tina», она покажешь все остальное?

Ответы [ 2 ]

2 голосов
/ 07 апреля 2020

Другой вариант для рассмотрения (BigQuery Standard SQL)

#standardSQL
SELECT * EXCEPT(flag) FROM (
  SELECT *, names = 'Tina' OR COUNTIF(names = 'Tina') OVER() = 0 AS flag
  FROM `project.dataset.table` 
)
WHERE flag

Я ожидал, что эта версия значительно дешевле, чем другая версия с неявным объединением

1 голос
/ 07 апреля 2020

Один из вариантов: union all объявление not exists:

select name from mytable where name = 'Tina'
union all
select t.name from mytable t where not exists (select 1 from mytable t1 where t1.name = 'Tina')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...