Bạn đang nhận được các cột trùng lặp vì khi bạn có nó, bạn đang truy vấn từ T1 VÀ T2. Vì vậy, trừ khi bạn nói rõ ràng chỉ hiển thị cho tôi T1. * Nó sẽ lấy các cột từ CẢ HAI tham chiếu bí danh bảng.
Vì truy vấn của bạn đang thực hiện HOẶC vào các ngày, bạn có thể cũng sẽ nhận được kết quả Descartes.
Bây giờ biết cấu trúc bảng của bạn, nhưng bạn có thể tốt hơn với một truy vấn rõ ràng như ...
SELECT
t1.day,
t2.day as OtherDay,
t1.quality,
t1.anotherColumn,
t2.OtherAnotherColumn,
t1.thirdColumn,
t2.OtherThirdColumn
FROM
my_table t1
join my_table t2
on t1.quality = t2.quality
AND t2.day = '2015-01-09'
where
t1.day = '2015-01-08'
Có một chỉ mục trên "my_table" của bạn dựa trên (ngày, chất lượng) để tối ưu hóa truy vấn. Và bạn có thể tiếp tục thêm các cặp, các cột mà bạn đang cố gắng so sánh giữa day1 và day2. T1 sẽ chỉ trả về những người được liên kết với ngày đầu tiên và bí danh T2 sẽ chỉ hiển thị cho các mục nhập phù hợp cho ngày thứ hai.
Bây giờ, nếu chỉ có mục nhập ở phía T1 mà không có mục nhập T2 tương ứng cho chất lượng và ngày được đề cập, nhưng bạn vẫn muốn xem những mục đó, thì chỉ cần thay đổi THAM GIA thành THAM GIA TRÁI.