Пожалуйста, попробуйте это.
Select * from (select A.id,A.time,A.link, ROW_NUMBER() OVER(partition by A.id order by A.time desc)As row_num from @tbl A )AS AA Where AA.row_num =1
ИЛИ
select A.id,A.time,A.link from test A
order by A.time desc
limit 1
"На большинстве диалектов Lisp существует значение, полуэквивалентное пустому указателю Java, названному нолем. В Clojure ноль является просто нулевым значением Java, концом истории".
Так как Clojure компилирует в байт-код Java, он кажется, что любая ссылка на ноль является просто ссылкой несуществующего объекта в базовой JVM. Ваши NPEs от выполнения Clojure являются результатом доступа к нолю.
От исходного кода Clojure, lang/LispReader.java
:
static private Object interpretToken(String s) throws Exception{
if(s.equals("nil"))
{
return null;
}
От lang/RT.java
:
static public void print(Object x, Writer w) throws Exception{
{
...
if(x == null)
w.write("nil");
Так nil
представление Clojure для базовой платформы null
. nil
обнаруживается больше нигде в источнике Java для Clojure. Единственная разница между nil
и null
тот, Clojure, и другой Java, но они - по существу псевдонимы, преобразованные назад и вперед беспрепятственно по мере необходимости средством чтения и принтером при движении от Clojure до Java к Clojure.
Да, nil
может вызвать NullPointerException
s. Попытайтесь обратиться к любому методу Java nil
, Вы получите NPE, например.
(.tostring nil)
Исходный код Clojure довольно легко считать когда дело доходит до вещей как это, посмотреть на него.