我有身份证清单
[id1, id2, id3.......]
我想查询所有行,以便id与列表中的一个id匹配
现在我正在用一种老套的方式做这件事
# This is a python script
id_list_str = "`_id` = '" + str(_id[0]) + "' "
for m_id in _id[1:]:
id_list_str += " OR `_id` = '" + str(m_txn_id) + "' "
hive_query = "SELECT" \
" `_id`, " \
" time, " \
" state " \
"FROM " \
" transaction " \
"WHERE " \
" %s " \
% (id_list_str)
我不认为这会随着我列表中id数量的增加而增加,还有其他方法吗?
谢谢
3条答案
按热度按时间ny6fqffe1#
您使用哪个配置单元版本?配置单元0.13现在不支持where子句中的/exists。。问题https://issues.apache.org/jira/browse/hive-784
f0ofjuux2#
你可以用
in
子句,例如在本例中:select * from table_name where column_name in ('medicine','physics','biology')
58wvjzkj3#
在配置单元中,尝试横向视图分解以展开列表。这将工作,如果你有许多名单以及。