2012-11-26 32 views
6

Trong postgresql Tôi có thể sử dụng subquery trong điều kiện joinCó thể sử dụng truy vấn phụ trong điều kiện kết nối trong Access không?

SELECT * 
FROM table1 LEFT JOIN table2 
    ON table1.id1 = (SELECT id2 FROM table2 LIMIT 1); 

Nhưng khi tôi cố gắng sử dụng nó trong Access

SELECT * 
FROM table1 LEFT JOIN table2 
    ON table1.id1 = (SELECT TOP 1 id2 FROM table2); 

tôi nhận được lỗi cú pháp. Có thực sự không thể trong Access hay chỉ là sai lầm của tôi?

Tôi biết rằng tôi có thể nhận được kết quả tương tự với WHERE, nhưng câu hỏi của tôi là về khả năng của JOIN trong Access.

Trả lời

8

Đó là không thể, theo MSDN documentation:

Cú pháp

FROM table1 [LEFT | RIGHT] THAM GIA table2 ON table1.field1 compopr table2.field2

Và (tôi nhấn mạnh):

field1, field2: Tên của các lĩnh vực được gia nhập. Các trường phải có cùng kiểu dữ liệu và chứa cùng một loại dữ liệu, nhưng chúng không cần phải có cùng tên.

Dường như bạn thậm chí không thể có các giá trị được mã hóa cứng khi tham gia; bạn phải chỉ định tên cột để tham gia.

Trong trường hợp của bạn, bạn sẽ muốn:

SELECT * 
FROM Table1 
LEFT JOIN (
    SELECT DISTINCT TOP 1 ID 
    FROM Table2 
    ORDER BY ID 
) Table2Derived ON Table1.ID = Table2Derived.ID 
+0

+1 Tôi đang di chuyển ra khỏi tiểu truy vấn trong hầu hết các trường hợp như bảng có nguồn gốc cung cấp cho hiệu suất cao hơn trong hầu hết các trường hợp –

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