10

I want to remove duplicate through row_number function based on How to get get Unique Records based on multiple columns from a table . But Was blocked by a syntax error. My use case as below: this is my table and it named demo

and my sql as below:

select demo.*, 
      row_number() over (partition by id order by creator desc) as rn 
from demo

but it tell me:

near "(": syntax error:

I dont know what happend and I do some search such as How to use ROW_NUMBER in sqlite . Unfortunately, I still cant figure out what mistake I make. Anything will be appreciate.

3
  • 4
    SQLite does not support ROW_NUMBER Commented May 14, 2018 at 14:11
  • 1
    Please use INSERTstatements to show data, not images. Commented May 14, 2018 at 14:14
  • 1
    SQLite 3.25 and above supports window functions. But can anyone suggest why System.Data.SQLite in c# return the syntax error? Is there anything to configure? Commented Dec 16, 2018 at 12:28

3 Answers 3

9

SQLite supports window functions since version 3.25, so the original query should work now.

Sign up to request clarification or add additional context in comments.

Comments

1

As mentioned in the comments, SQLite does not support row_number() or other window functions. You can use a correlated subquery:

select d.*
from demo d
where d.creator = (select max(d2.creator) from demo d2 where d2.id = d.id);

With an index on demo(id, creator) this often has better performance even in databases that do support row_number().

Comments

0

Use subquery instead:

select d1.* 
from demo d1
where primarykey = (select d2.primarykey
                    from demo d2
                    where d2.id = d1.id
                    order by d2.creator desc
                    LIMIT 1);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.