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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.