Tôi đang gặp khó khăn khi chuyển đổi các thủ tục được lưu trữ từ SQL Server sang Oracle để sản phẩm của chúng tôi tương thích với nó.
Tôi có các truy vấn trả về bản ghi gần đây nhất của một số bảng, dựa trên dấu thời gian:
Máy chủ SQL:
SELECT TOP 1 *
FROM RACEWAY_INPUT_LABO
ORDER BY t_stamp DESC
=> Điều đó sẽ trả về cho tôi bản ghi gần đây nhất
Nhưng Oracle:
SELECT *
FROM raceway_input_labo
WHERE rownum <= 1
ORDER BY t_stamp DESC
=> Điều đó sẽ trả về cho tôi bản ghi cũ nhất (có thể tùy thuộc vào chỉ số), bất kể ORDER BY
câu lệnh!
Tôi đã đóng gói truy vấn Oracle theo cách này để phù hợp với yêu cầu của tôi:
SELECT *
FROM
(SELECT *
FROM raceway_input_labo
ORDER BY t_stamp DESC)
WHERE rownum <= 1
Và nó hoạt động. Nhưng nó giống như một vụ hack kinh khủng đối với tôi, đặc biệt là nếu tôi có rất nhiều bản ghi trong các bảng liên quan.
Cách tốt nhất để đạt được điều này là gì ?