Đây là một câu hỏi ngớ ngẩn, nhưng đó là câu hỏi mà tôi chưa bao giờ được trả lời thẳng.
Câu hỏi thực hành tốt nhất cho MySQL: thứ tự theo id hoặc ngày?
Giả sử tôi có một bảng DB với các lĩnh vực và các giá trị sau:
| id | date_added | balance |
+------------------------------------+
| 1 | 2009-12-01 19:43:22 | 1237.50 |
| 2 | 2010-01-12 03:19:54 | 473.00 |
| 3 | 2010-01-12 03:19:54 | 2131.20 |
| 4 | 2010-01-20 11:27:31 | 3238.10 |
| 5 | 2010-01-25 22:52:07 | 569.40 |
+------------------------------------+
này là dành cho 'chiếm' một rất cơ bản hệ thống phụ. Tôi muốn có số dư gần đây nhất. Trường id
được đặt thành auto_increment. Thông thường, tôi sẽ sử dụng:
SELECT balance FROM my_table ORDER BY date_added DESC LIMIT 1;
Nhưng tôi cần phải thực hiện hoàn toàn chắc chắn rằng giá trị trả về là gần đây nhất ... (xem id # 2 & 3 nêu trên)
1) tôi sẽ tốt hơn bằng cách sử dụng:
SELECT balance FROM my_table ORDER BY id DESC LIMIT 1;
2) Hoặc đây sẽ là một giải pháp tốt hơn ?:
SELECT balance FROM my_table ORDER BY date_added,id DESC LIMIT 1;
AFAIK, auto_increment
hoạt động khá tốt, nhưng nó đủ tin cậy để sắp xếp một cái gì đó rất quan trọng này bởi? Đó là lý do tại sao tôi đang suy nghĩ phân loại theo cả hai lĩnh vực là một ý tưởng tốt hơn, nhưng tôi đã nhìn thấy một số hành vi thực sự kỳ quặc trong MySQL khi tôi đã làm điều đó trong quá khứ. Hoặc nếu có một giải pháp tốt hơn, tôi sẽ đánh giá cao ý kiến của bạn.
Cảm ơn bạn trước!
Brian
Cảm ơn Pax! Thực sự là một trường tôi đã rời khỏi bảng và đó là user_id. Chúng tôi có một hệ thống 'tín dụng' mà người dùng của chúng tôi có thể sử dụng để mua hàng hóa hoặc dịch vụ và chúng tôi đang giữ tổng số dư của họ trong bảng này. Để có được 'số dư hiện tại', tôi muốn chọn số dư gần đây nhất từ bảng cụ thể này. Bảng trên được cập nhật bất cứ lúc nào một giao dịch được thực hiện. (tất cả các giao dịch được lưu trữ trong một bảng riêng). Tôi hy vọng điều đó có ý nghĩa, lol. – DondeEstaMiCulo
Hmm, đó không phải là cách tôi làm nhưng với mỗi cái riêng của họ :-) Tôi sẽ tính toán số dư dựa trên tất cả các mục giao dịch của họ (tùy chọn của tôi vì có * không * cơ hội dữ liệu thoát khỏi bước giữa hai bảng), hoặc chỉ duy trì * một * bản ghi cho mỗi người dùng với số dư hiện tại và cập nhật nó. Trong thực tế, tôi không thể mang lại cho mình để đề nghị lựa chọn thứ hai ở tất cả bây giờ mà tôi nghĩ về nó. Bạn cần phải cẩn thận với giải pháp hiện tại của mình vì bạn đang giữ dữ liệu ở hai nơi khác nhau có thể không đồng ý với nhau. – paxdiablo
Vâng, chúng tôi muốn giữ lại lịch sử cân bằng nếu không có gì khác ngoài mục đích báo cáo nội bộ. Tôi đã thực sự nghĩ về ý tưởng của bạn về tính toán tất cả các giao dịch là tốt, nhưng figured cách trên có thể được dễ dàng hơn. Có lẽ tôi sẽ nghĩ lại ý tưởng đó. ;) Tôi rất thích nghe bất kỳ ý tưởng hoặc lời khuyên nào khác mà bạn có thể có, ngay cả khi họ không có chủ đề vì tôi không có kiến thức về các mô hình cơ sở dữ liệu kiểu kế toán. ;) Cảm ơn một lần nữa! – DondeEstaMiCulo