2008-09-02 19 views
9

Tôi đang duy trì một số mã sử dụng toán tử * = trong truy vấn vào cơ sở dữ liệu Sybase và tôi không thể tìm thấy tài liệu trên đó. Có ai biết những gì * = không? Tôi cho rằng đó là một số loại tham gia.* = trong Sybase SQL

select * from a, b where a.id *= b.id

tôi không thể tìm ra cách này là khác nhau từ:

select * from a, b where a.id = b.id
+0

Hãy chăm sóc. Nó không được dùng nữa ngày nay và cần kích hoạt rõ ràng về cấu hình cơ sở dữ liệu. – frlan

Trả lời

12

Từ http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.dc34982_1500/html/mig_gde/mig_gde160.htm:

Nội và bảng ngoài

các thuật ngữ bảng bên ngoài và bên trong bảng mô tả các vị trí của các bảng trong một phép nối ngoài:

  • Trong một kết nối bên trái, bảng bên ngoài và bảng bên trong là các bảng bên trái và bên phải tương ứng. Bảng bên ngoài và bảng bên trong cũng được gọi là bảng bảo quản hàng và cung cấp null, tương ứng.

  • Trong kết nối phù hợp, bảng bên ngoài và bảng bên trong là bảng bên phải và bên trái tương ứng.

Ví dụ, trong các truy vấn dưới đây, T1 là bảng bên ngoài và T2 là bảng nội:

  • T1 trái tham gia T2
  • T2 đúng tham gia T1

Hoặc, sử dụng cú pháp Transact-SQL:

  • T1 * = T2
  • T2 = * T1
+1

wow, cảm ơn sybase để làm cho âm thanh này trở nên phức tạp và khó hiểu. –

+0

Nó xuất hiện liên kết bạn cung cấp nói về những thứ khác nhau. – Trismegistos

9

Nó có nghĩa là bên ngoài tham gia, đơn giản = có nghĩa là bên tham gia.

*= is LEFT JOIN and =* is RIGHT JOIN. 

(hoặc ngược lại, tôi cứ quên kể từ khi tôi không sử dụng nó nữa, và Google không phải là hữu ích khi tìm kiếm * =)

+0

câu trả lời này là đúng. –

6

Tất nhiên, bạn nên viết nó theo cách này:

SELECT * 
FROM a 
LEFT JOIN b ON b.id=a.id 

Các một, cú pháp b là ác.

+0

Tôi không biết gì về điều ác, nhưng nó chắc chắn là độc quyền đối với Sybase và Microsoft SQL Server, và không được hỗ trợ bởi các nhãn hiệu cơ sở dữ liệu khác. –

0
select * from a, b where a.id = b.id

Đòi hỏi rằng một hàng tồn tại trong nơi b.id = a.id để trả lại một câu trả lời

select * from a, b where a.id *= b.id

sẽ điền vào các cột từ b với null khi không có ở đó một hàng trong b nơi b.id = a.id.

5

ANSI-82 cú pháp

select 
    * 
from 
    a 
    , b 

where 
    a.id *= b.id 

ANSI-92

select 
    * 
from 
    a 
    left outer join b 
     on a.id = b.id 
+0

Tôi nghĩ bạn có nghĩa là SQL-89 và SQL-92, không phải ANSI-82 và ANSI-92. –

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