SQL tham gia trên nhiều cột trong cùng một bảng


136

Tôi có 2 truy vấn con, nhưng tôi gặp khó khăn khi nối các cột với nhau từ cùng một bảng. Tôi đã thử:

SELECT * FROM

(SELECT userid, listid 
FROM user_views_table
WHERE date='2013-05-15' AND view_type='lists') a

JOIN

(SELECT sourceid, destinationid
FROM actions_table
WHERE date='2013-05-15' AND payloadtype='lists_user' AND actiontype='delete') b

ON a.userid = b.sourceid
ON a.listid = b.destinationid;

Nếu tôi chỉ đơn giản là kết thúc truy vấn với ON a.userid = b.sourceidnó hoạt động, nhưng làm thế nào tôi cũng có thể tham gia các bảng này trên một cột khác ON a.listid = b.destinationid??

Bất kỳ trợ giúp đánh giá cao.


2
cảm ơn vì câu trả lời .. argh chỉ không có ";" ở cuối truy vấn trước đó
— user1899415

Câu trả lời:


201

Tham gia như thế này:

ON a.userid = b.sourceid AND a.listid = b.destinationid;

7
Có vẻ như rõ ràng khi nhìn lại, nhưng tôi muốn lưu ý rằng OR cũng hoạt động tốt, bạn chỉ cần kết thúc với RẤT NHIỀU hồ sơ.
— Rác thải

68

Bạn muốn tham gia với điều kiện 1 VÀ điều kiện 2, vì vậy chỉ cần sử dụng từ khóa AND như bên dưới

ON a.userid = b.sourceid AND a.listid = b.destinationid;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.