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

thiết kế bảng + câu hỏi SQL

Tôi không hiểu tại sao bạn nên cần khóa tổng hợp, vì vậy tôi sẽ sử dụng bảng này để thay thế:

CREATE TABLE foodbar (
  user_id     INT NOT NULL
, created_at  date not null
, weight      double not null
, PRIMARY KEY (user_id, created_at)
);
SELECT curr.user_id, curr.weight - prev.weight
FROM foodbar curr, foodbar prev
WHERE curr.user_id = prev.user_id
  AND curr.created_at = CURRENT_DATE
  AND prev.created_at = CURRENT_DATE - INTERVAL '7 days'
;

cú pháp số học ngày tháng có thể sai nhưng bạn hiểu rồi đấy

xem ở trên, thêm ORDER BY curr.weight - prev.weight DESCLIMIT N

cho hai câu hỏi cuối cùng:đừng suy đoán, hãy kiểm tra các kế hoạch thực hiện. (postgresql có EXPLAIN ANALYZE , dunno about mysql) có thể bạn sẽ thấy mình cần lập chỉ mục các cột tham gia vào WHEREJOIN , không phải những thứ tạo nên tập kết quả.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tạo sơ đồ trang bằng PHP &MySQL

  2. Mã di chuyển cơ sở dữ liệu cụ thể

  3. Mã hóa mật khẩu trước khi lưu trữ trong cơ sở dữ liệu?

  4. MySQL TẠO BẢNG NẾU KHÔNG TỒN TẠI -> Lỗi 1050

  5. Khi nào và tại sao sử dụng mysqli_fetch_row, mysqli_fetch_object, mysqli_fetch_assoc, mysqli_fetch_array