ฉันมีปัญหาในการแปลงกระบวนงานที่จัดเก็บจาก SQL Server เป็น Oracle เพื่อให้ผลิตภัณฑ์ของเราเข้ากันได้กับมัน
ฉันมีคำถามที่ส่งคืนระเบียนล่าสุดของตารางบางตารางโดยอิงตามการประทับเวลา:
เซิร์ฟเวอร์ SQL:
SELECT TOP 1 *
FROM RACEWAY_INPUT_LABO
ORDER BY t_stamp DESC
=> นั่นจะส่งคืนบันทึกล่าสุดให้ฉัน
แต่Oracle:
SELECT *
FROM raceway_input_labo
WHERE rownum <= 1
ORDER BY t_stamp DESC
=> นั่นจะส่งคืนบันทึกที่เก่าแก่ที่สุดให้ฉัน (อาจขึ้นอยู่กับดัชนี) โดยไม่คำนึงถึงORDER BY
คำสั่ง!
ฉันสรุปการสืบค้น Oracle ด้วยวิธีนี้เพื่อให้ตรงกับความต้องการของฉัน:
SELECT *
FROM
(SELECT *
FROM raceway_input_labo
ORDER BY t_stamp DESC)
WHERE rownum <= 1
และได้ผล แต่ดูเหมือนเป็นการแฮ็คที่น่ากลัวสำหรับฉันโดยเฉพาะอย่างยิ่งถ้าฉันมีประวัติจำนวนมากในตารางที่เกี่ยวข้อง
วิธีที่ดีที่สุดในการบรรลุเป้าหมายนี้คืออะไร?