我想設計一個查詢,以找出是否有至少一隻貓(SELECT COUNT(*),其中的rownum = 1)尚未簽出。如何排除從查詢結果中的最新的空場?
一個奇怪的條件是,結果應排除如果沒有簽出最新的貓,這樣:
TABLE schedule
-------------------------------------
| type | checkin | checkout
-------------------------------------
| cat | 20:10 | (null)
| dog | 19:35 | (null)
| dog | 19:35 | (null)
| cat | 15:31 | (null) ----> exclude this cat in this scenario
| dog | 12:47 | 13:17
| dog | 10:12 | 12:45
| cat | 08:27 | 11:36
應該返回1,第一條記錄
| cat | 20:10 | (null)
我類似於創建查詢
select * from schedule where type = 'cat' and checkout is null order by checkin desc
但是,此查詢不能解析排除。我可以肯定處理它像Java服務層,但只是想知道的任何解決方案可以在查詢設計與良好的性能當在表大量數據的(簽入和簽出被編入索引,但不會打字)
哪些數據類型是'checkin'和'checkout'?它看起來像字符串(也許'varchar2'),這將導致非常差的執行效率。如果確實如此,並且您需要良好性能,則應將其更改爲適當的數據類型(DATE)。那麼,如果兩隻沒有被檢出的貓被綁定爲「最近的檢查」,會發生什麼? – mathguy