Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

SQL Tự kết hợp với so sánh dữ liệu cho các ngày khác nhau

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. getdate () trong mysql

  2. Android tìm nạp dữ liệu từ mySql

  3. MySQL Không phân biệt chữ hoa chữ thường nhưng nhạy cảm chính xác Khoá duy nhất UTF8

  4. Mysql - Làm cách nào để sắp xếp các kết quả theo các hàng xen kẽ (1,2,3, 1, 2, 3, 1, 2, 3,), có được không?

  5. Cắt bỏ tất cả các bảng (hầu hết trong số đó có ràng buộc). Làm thế nào để tạm thời loại bỏ chúng