2009-12-21 34 views
14

Tôi cố gắng để làm cho một bên tham gia vào một tuyên bố chọn như thế này:SQL Nội tham gia vào câu chọn

select * 
from (select* from bars where rownum <= 10)as tab1 
inner join (select * from bars where rownum <= 10)as tab2 
on tab1.close=tab2.close 

và tôi nhận được lỗi sau: ORA-00.933 lệnh SQL không đúng cách kết thúc Bất kỳ sự giúp đỡ sẽ được đánh giá cao, cảm ơn bạn!

Trả lời

39

Chỉ cần loại bỏ as từ truy vấn của bạn:

select * 
from (select* from bars where rownum <= 10) tab1 
inner join (select * from bars where rownum <= 10) tab2 
on tab1.close=tab2.close 
+1

Hi egorius, cảm ơn, nó làm việc. Tôi vẫn không hiểu tại sao đôi khi oracle chấp nhận và đôi khi không phải là – user235693

+5

'Như' có thể được (tùy chọn) được sử dụng trước một bí danh COLUMN. Không thể thêm tiền tố TABLE bằng 'as'. Ví dụ: "select count (*) như cnt từ d kép". –

+1

Bạn có thể muốn xem sơ đồ cú pháp SELECT (nó khá lớn, nhưng định nghĩa cú pháp chính xác): http://download.oracle.com/docs/cd/B10501_01/server.920/a96540/statements_103a.htm#SQLRF01702 –

1
select * from 
((select* from bars where rownum <= 10)as tab1 
inner join (select * from bars where rownum <= 10)as tab2 
on tab1.close=tab2.close) 
2

tôi tin rằng các lỗi xuất phát từ bạn cần một dấu chấm phẩy để kết thúc tuyên bố. Lựa chọn có vẻ tốt với tôi nếu không.

1

chỉ đưa ra một khoảng trắng giữa ')' và 'như':

select * from (select* from bars where rownum <= 10) as tab1 
inner join 
(select * from bars where rownum <= 10) as tab2 
on 
tab1.close=tab2.close