Tôi đã gặp một số truy vấn SQL trong Oracle có chứa '(+)' và tôi không biết ý nghĩa của nó. Ai đó có thể giải thích mục đích của nó hoặc cung cấp một số ví dụ về việc sử dụng nó? Cảm ơnÝ nghĩa của (+) trong truy vấn SQL
Trả lời
Đó là từ đồng nghĩa của Oracle cho OUTER JOIN
.
SELECT *
FROM a, b
WHERE b.id(+) = a.id
cho cùng một kết quả như
SELECT *
FROM a
LEFT OUTER JOIN b
ON b.id = a.id
Tôi sẽ lưu ý cho người tiếp theo, chú ý đến những gì đã xảy ra với 'a' và' b' ở đây. Trong ví dụ mệnh đề from là '[a, b]', nhưng kiểm tra tương đương là '[b.id = a.id]'. Thói quen của tôi là giữ sự tương đương '[a.id = b.id]'; vì vậy tôi đã đọc sai ví dụ. Một giờ trong cuộc đời của tôi, tôi sẽ không lấy lại; ^) – BIBD
Để làm điều đó, tôi sẽ giải thích '(+)' như cách nói của oracle "bên này bị vô giá trị khi không tìm thấy kết quả phù hợp". Sử dụng định mức của tôi cho tương đương '[a.id = b.id]'; thì có một tấm gương đang xảy ra. Nếu tôi viết lại truy vấn theo tiêu chuẩn hiện đại, '[a.id = b.id (+)]' trở thành một LEFT OUTER và '[a.id (+) = b.id]' trở thành một RIGHT OUTER. – BIBD
Điều là toán tử (+) được đặt trực tiếp trong câu lệnh điều kiện và ở bên cạnh bảng tùy chọn (bảng được phép chứa giá trị rỗng hoặc rỗng trong điều kiện). – Yergalem
Các + là một cắt ngắn cho OUTER JOIN, tùy thuộc vào phía bạn đặt nó trên, nó cho thấy một LEFT hoặc RIGHT OUTER JOIN
Kiểm tra mục nhập thứ hai trong số this forum post đối với một số ví dụ
IIRC, dấu + được sử dụng trong các phiên bản cũ hơn của Oracle để biểu thị phép nối ngoài trong cú pháp nối SQL pre-ANSI. Nói cách khác:
select foo,bar
from a, b
where a.id = b.id+
là tương đương với
select foo,bar
from a left outer join b
on a.id = b.id
LƯU Ý: đây có thể là ngược/hơi không chính xác, như tôi đã không bao giờ sử dụng cú pháp SQL pre-ANSI.
Nó được sử dụng trong các phiên bản mới hơn của Oracle cho những người trong chúng ta ghét ANSI sql. –
@Mark Brady chính xác. Tôi cảm thấy nó làm cho mục đích của truy vấn rõ ràng hơn. Và tôi cũng * ghét * ANSI SQL. –
Bạn sử dụng điều này để đảm bảo rằng bảng bạn đang tham gia không làm giảm số lượng bản ghi được trả lại. Vì vậy, nó tiện dụng khi bạn đang tham gia vào một bảng mà có thể không có một bản ghi cho mỗi khóa bạn đang tham gia.
Ví dụ, nếu bạn đang tham gia một khách hàng và mua hàng bảng:
Để danh sách các tất cả khách hàng và tất cả các mua hàng của họ, bạn muốn làm một phép nối ngoài (+) trên bàn mua hàng để khách hàng mà chưa mua bất cứ thứ gì vẫn hiển thị trong báo cáo của bạn.
- 1. Truy vấn này có ý nghĩa gì?
- 2. Các dấu chấm có ý nghĩa gì trong truy vấn SQL này?
- 3. Ý nghĩa SQL của 0x5E5B7D7E là gì?
- 4. Truy vấn khung khuôn mẫu truy vấn xuất hiện ngoài ý nghĩa
- 5. Ý nghĩa của biểu tượng '@' trong Oracle SQL là gì?
- 6. Lớp Truy vấn của tôi. Ý kiến của bạn?
- 7. Ý nghĩa của ".. ::." trong C#?
- 8. Ý nghĩa của "." trong printf
- 9. PL/SQL Ý nghĩa của <<word>>
- 10. Ý nghĩa của bảng ReportServer.dbo.Schedule
- 11. Ý nghĩa của $ (OutDir)
- 12. Ý nghĩa của main_syntax
- 13. Ý nghĩa của []
- 14. Truy vấn SQL trong (@Variable)
- 15. SQL Server tương thích ý nghĩa mức
- 16. ý nghĩa của 'sourceSets.all *'
- 17. Ý nghĩa của requestCode trong startActivityForResult
- 18. Ý nghĩa của tiền tố N trong các câu lệnh T-SQL là gì?
- 19. Toán tử (+) có ý nghĩa gì trong mệnh đề của PL/SQL?
- 20. Ý nghĩa của Y2K có ý nghĩa gì?
- 21. Có ý nghĩa khi sử dụng "LIMIT 1" trong truy vấn "CHỌN 1 ..." không?
- 22. truy vấn SQL, đếm và nhóm của
- 23. Trong truy vấn MongoDB, giới hạn phủ định có ý nghĩa gì?
- 24. Marks Exclamation trong một truy vấn SQL
- 25. Ý nghĩa của từ khóa 'riêng tư' trong Hợp kim? Ý nghĩa của tuyên bố 'enum'?
- 26. Truy vấn Setezza Sql
- 27. Ý nghĩa của $? trong shell script
- 28. Ý nghĩa của "vùng" trong copyWithZone :?
- 29. ý nghĩa của "this.el" trong $ ('ul', this.el)
- 30. Ý nghĩa của 0_0 trong Java 7
dupe: http://stackoverflow.com/questions/430274/oracle-what-does-do-in-a-where-clause – Alkini
Tôi thực sự đã thử tìm kiếm câu trả lời trước khi đăng câu hỏi nhưng không nhận được bất kỳ câu hỏi nào kết quả khi tìm kiếm '+' hoặc '(+). Thật kỳ lạ khi tiêu đề câu hỏi trong URL dường như cũng bỏ qua phần (+). – Zabbala
Đây là bản sao của [bài đăng này] (http://stackoverflow.com/questions/430274/oracle-what-does-do-in-a-where-clause). Bạn có thể tìm thêm một số thông tin ở đó. –