Объедините два SQL-запроса в один запрос для одной и той же таблицы

#sql #apache-spark-sql

#sql #apache-spark-sql

Вопрос:

У меня есть таблица под названием COMPUTED_DATA. Он содержит 3 столбца: данные, кластер и last_execution.

Существует задание, которое выполняется каждые 2 недели, которое вставляет несколько данных для кластера и его времени last_execution.

Мое требование состоит в том, чтобы получить данные для кластера за его последнее время last_execution. В настоящее время я написал такой запрос в своем коде

 last_execution = SELECT distinct(last_execution) FROM COMPUTED_DATA  WHERE cluster=1204 AND ORDER BY last_execution DESC limit 1  

Приведенный выше запрос возвращает мне самое последнее last_execution

 data = SELECT data FROM COMPUTED_DATA WHERE cluster=1204 AND last_execution={last_execution}  

Этот запрос использует это last_execution для получения данных.

Мой вопрос в том, можно ли это объединить всего в 1 запрос. Я запускаю это в своем кластере spark, поэтому каждый SQL-запрос требует очень много времени. Поэтому я хочу объединить это в один запрос. Пожалуйста, помогите.

ИЗМЕНИТЬ: второй запрос, из которого я получаю данные, возвращает несколько строк. Следовательно, я не могу использовать ограничение на второй запрос, потому что это количество неизвестно.

Ответ №1:

Да, это может

 SELECT  data FROM  COMPUTED_DATA WHERE  cluster = 1204 and last_execution=(SELECT distinct(last_execution) FROM COMPUTED_DATA  WHERE cluster=1204 AND ORDER BY last_execution DESC limit 1)  

Это не самый красивый способ написать это, но вы понимаете, как использовать подзапрос в предложении where.