Предположим, у меня есть таблица tab1
только с одной строкой и большими таблицами big1
и big2
. Как использовать столбец в tab1
(который содержит одно число) в качестве скаляра, например, в
select a.foo * tab1.bar - b.quux
from big1 a join big2 b by big1.id = big2.id
2 ответа
Просто сделай еще одно соединение. Это всего одна строка, так что это не дорого:
select a.foo * tab1.bar - b.quux
from big1 a join big2 b by big1.id = big2.id join tab1;
Это немного излишне, но вы можете использовать UDF distributed_map
в Brickhouse (http://github.com / klout / brickhouse) и создать карту только с одним ключом
insert overwrite directory 'mytab1'
select bar, 'value' from tab1;
add file mytab1;
select a.foo * array_index( map_keys( distributed_map( 'mytab1' ) ),0 ) - b.quux
from big1 a join big2 b on ( big1.id = big2.id )
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.