2013-02-18 69 views
5

Tôi đang sử dụng Hive 0.9.0 và tôi đang cố gắng để thực hiện truy vấn tức làHive nhiều truy vấn con

`SELECT a.id, b.user FROM (SELECT...FROM a_table) a, (SELECT...FROM b_table) b WHERE a.date = b.date;` 

nhưng nó sẽ trả về lỗi "vòng lặp (...) + không phù hợp với đầu vào .... ". Hive có hỗ trợ nhiều truy vấn phụ trong FROM giống như Oracle DB không?

Trả lời

6

Nhiều subqueries được phép trong tổ ong.

Tôi đã thử nghiệm với mã bên dưới, nó hoạt động.

select * from (select id from test where id>10) a 
join (select id from test where id>20) b on a.id=b.id; 

Vui lòng đăng mã chính xác để tôi có thể đưa ra giải pháp phù hợp.

+0

cảm ơn, Balaswamy! Tôi đã thực hiện truy vấn với JOIN giống như trong ví dụ của bạn –

1

tham gia truy vấn phụ được hỗ trợ Hoàn toàn.

Tôi nghĩ rằng vấn đề chính là u sử dụng SELECT...FROM.

Cú pháp đúng là SELECT * FROM

SELECT a.id, b.user 
FROM 
(SELECT * FROM a_table) a 
JOIN (SELECT * FROM b_table) b ON a.date = b.date; 
+0

Tôi cho là ... có nghĩa là viết tắt cho "một số trường" – MikeKulls

0

Nếu bạn muốn để có được những sản phẩm đầy đủ Descartes trước khi áp dụng WHERE khoản, thay vì:

SELECT a.id, b.user FROM (SELECT...FROM a_table) a, (SELECT...FROM b_table) b WHERE a.date = b.date; 

bạn nên sử dụng 'tham gia' ở giữa , tức là

SELECT a.id, b.user FROM (SELECT...FROM a_table) a join (SELECT...FROM b_table) b WHERE a.date = b.date; 

ở trên là không được chấp nhận ở chế độ nghiêm ngặt.

Các vấn đề liên quan