Vấn đề của tôi có vẻ như cần có một giải pháp đơn giản hơn nhiều so với những gì tôi nghĩ ra. Bắt đầu với tập dữ liệu này:
log_table
+--------+-----------+------------------+---------+
| log_id | entity_id | date | comment |
+--------+-----------+------------------+---------+
| 1 | A | 2012-10-23 07:50 | foo |
| 2 | B | 2012-10-23 07:59 | bar |
| 3 | B | 2012-10-23 08:11 | baz |
| 4 | A | 2012-10-23 08:23 | bat |
+--------+-----------+------------------+---------+
Giả sử tôi muốn nhận ngày nhập nhật ký mới nhất cho mỗi thực thể để kết quả trông như sau:
Results:
+-----------+------------------+--------------+
| entity_id | last_log_date | last_comment |
+-----------+------------------+--------------+
| B | 2012-10-23 08:11 | baz |
| A | 2012-10-23 08:23 | bat |
+-----------+------------------+--------------+
Tôi hiện đang sử dụng MySQL trông giống như:
SELECT
`entity_id`,
`date` AS last_log_date,
`comment` AS last_comment
FROM (
SELECT *
FROM `log_table`
ORDER BY `date` DESC, log_id ASC
) AS `ordered_log`
GROUP BY `entity_id`
Đây hoạt động tốt nhưng nó không có vẻ rất hiệu quả đối với tôi, đó có phải là một cách tốt hơn để làm điều này, chắc chắn?
entity_id
và cácdate
cột rồi. Lý tưởng nhất là truy vấn sẽ chạy nhiều hơn hoặc ít hơn ngay lập tức nếu có thể ...