我有一个看起来工作正常的查询,但我想知道是否有更清晰(或更合适)的方式来编写它。
目标是在表ZVBAPIUSW01中找到记录,其中日期(UPDPASS)和时间(UPDPASSTIME)是基于给定用户ID的最大值。
这是我到目前为止所得到的:
SELECT SINGLE * FROM ZVBAPIUSW01
WHERE OBJID = ID
AND UPDPASS IN (
SELECT MAX( UPDPASS ) FROM ZVBAPIUSW01 WHERE OBJID = ID )
AND UPDPASSTIME IN (
SELECT MAX( UPDPASSTIME ) FROM ZVBAPIUSW01 WHERE OBJID = ID AND UPDPASS IN (
SELECT MAX( UPDPASS ) FROM ZVBAPIUSW01 WHERE OBJID = ID ) ).
感谢您的帮助。 麦克
答案 0 :(得分:8)
你可以尝试
SELECT foo bar baz
FROM ZVBAPIUSW01 UP TO 1 ROWS
INTO (l_foo, l_bar, l_baz)
WHERE OBJID = ID
ORDER BY updpass DESCENDING updpasstime DESCENDING.
答案 1 :(得分:1)
不要使用Select *而是使用Select(必需列表)