2012-02-07 56 views
8
TABLE A >> 
uid name 
1 test1 
2 test2 
3 test3 
4 test4 

TABLE B >> 
uid address 
1 address1 
2 address2 
4 address3 

RESULT 
1 test1 address1 
2 test2 address2 
3 test3 
4 test4 address3 

Bất kỳ ai cũng có thể chỉ cho tôi cách viết truy vấn và tìm nạp kết quả như trên, Cảm ơn rất nhiều! tôi đã thử tham gia, tham gia trái và phải. tất cả kết quả không có gì.sql tham gia hai bảng

+0

W mũ bạn đã thử với tham gia của bạn? Tức là cho những nỗ lực? –

Trả lời

15

bạn có thể viết lại bên ngoài tham gia giữa hai bảng Cách tốt nhất để hiểu được kiểm tra hình ảnh dưới đây

Query cho yêu cầu của bạn

SELECT A.uid, A.name, B.address FROM A LEFT JOIN B ON A.uid=B.uid 

Đọc bài viết gốc này trên Dự án Mã sẽ giúp bạn rất nhiều: Visual Representation of SQL Joins.

alt text

Tìm một bản gốc tại địa chỉ: Difference between JOIN and OUTER JOIN in MySQL.

+0

Đó là sơ đồ các hoạt động đã đặt, chứ không phải tham gia, ví dụ: phía dưới cùng bên trái là 'A UNION B', cái ở giữa là 'A INTERSECT B',… – onedaywhen

+0

Tôi thích sơ đồ của bạn, giải thích mọi thứ rất tốt. Cảm ơn rất nhiều – Bruce

1

Bạn nói bạn đã cố gắng một trái tham gia nhưng không đưa ra bất cứ nỗ lực --- một trong những nỗ lực hợp lý đầu tiên sẽ là:

SELECT A.uid, A.name, B.address 
FROM A 
LEFT JOIN B ON A.uid=B.uid 

Hey mau! nó cung cấp cho bạn những gì bạn đã sau.

2
SELECT A.uid, A.name, B.address FROM A LEFT OUTER JOIN B ON A.uid = B.uid 
1

Bạn có thể sử dụng bất kỳ tham gia nào. Tôi viết truy vấn này để tham gia đầy đủ.

select A.uid,A.name,B.address from A FULL JOIN B ON A.uid = B.uid 
1

Tôi đoán bạn sau khi một giá trị rỗng nếu không có giá trị đối với B, đó là có cùng một uid trong A.

Nếu đây là trường hợp, IFNULL sẽ trả về giá trị mặc định bạn quy định trong trường hợp tham số là null (ISNULL được sử dụng trong MSSQL):

SELECT A.value, IFNULL(B.value, '') 
FROM A LEFT JOIN B 
ON A.uid = B.uid 

này sẽ tạo ra một cái gì đó như:

test1 address1 
test2 address2 
test3 
test4 address3 
Các vấn đề liên quan