SQL错误:ROW_NUMBER()个OVER(部分

我的SQL代码有什么问题?

我试图消除此答案之后的重复行

但是我一直收到以下错误:

在“(”附近:语法错误:SELECT rn = ROW_NUMBER()OVER(

这是SQL代码:

SELECT 

rn = ROW_NUMBER() OVER (PARTITION BY s.stop_id, s.stop_name

ORDER BY s.stop_id, s.stop_name)

FROM stops s

我在某处读到它与SQL版本或sqlite3的用法有关?

这里是一些其他有关该问题的信息:

我有一张开始的桌子:

table_beginning =

[some_text0 , some_text1 , some_text2 , some_text3 ]

[ bla_1 , monday , red , bla_something ]

[ bla_77 , tuesday , green , bla_other ]

[ bla_99 , monday , blue , bla_anything ]

[ bla_00 , wednesday , red , bla_maybe ]

[ bla_55 , monday , violet , bla_more ]

[ bal_66 , monday , red , bla_kind ]

[ bal_22 , monday , red , bla_stuff ]

我想最后得到一个没有关于col_2和col_3的复数的表(不关心col_1和col_4是什么!)

如:

table_final1 =

[some_text0 , some_text1 , some_text2 , some_text3 ]

[ bla_1 , monday , red , bla_something ]

[ bla_77 , tuesday , green , bla_other ]

[ bla_99 , monday , blue , bla_anything ]

[ bla_00 , wednesday , red , bla_maybe ]

[ bla_55 , monday , violet , bla_more ]

(->被踢出的哪一行都没有关系。因此,最终表也可能看起来像:

table_final2 =

[some_text0 , some_text1 , some_text2 , some_text3 ]

[ bla_77 , tuesday , green , bla_other ]

[ bla_99 , monday , blue , bla_anything ]

[ bla_00 , wednesday , red , bla_maybe ]

[ bla_55 , monday , violet , bla_more ]

[ bal_66 , monday , red , bla_kind ]

或者

table_final3 =

[some_text0 , some_text1 , some_text2 , some_text3 ]

[ bla_77 , tuesday , green , bla_other ]

[ bla_99 , monday , blue , bla_anything ]

[ bla_00 , wednesday , red , bla_maybe ]

[ bla_55 , monday , violet , bla_more ]

[ bal_22 , monday , red , bla_stuff ]

重要的是col_2和col_3永远不会有相同的两个条目!

如您所见some_text1 = monday AND some_text2 =

red,现在仅存在一次!(从只查看col_2和col_3的角度来看,消除了重复项)

从col_1和col_4中的内容开始,我根本不在乎其中的内容!我只关心col_2和col_3的内容(那里没有任何复数形式!)

一种解决方案:

我想出了一种方法(但也许有一种更优雅的方法?)

CREATE TABLE table_intermediate AS

SELECT DISTINCT col_2, col_3

FROM table_beginning;

->这将创建一个中间表->使用DISTINCT关键字它将消除重复项->(缺点是,我完全松散了col_1和col_4信息)

也许有一种解决方案,可以在col_1和col_4上保留信息?(同样,我不在乎col_1或col_4中的哪一个!)

回答:

在SQLite中,通常可以使用rowid

select s.*

from stops s

where s.rowid = (select min(s2.rowid)

from stops s2

where s2.stop_id = s.stop_id and s2.stop_name = s.stop_name

);

我不确定这是否是您真正需要的。但这似乎就是您想要处理的row_number()。如果没有解决问题,请询问另一个有关示例数据和所需结果的问题。

以上是 SQL错误:ROW_NUMBER()个OVER(部分 的全部内容, 来源链接: utcz.com/qa/423274.html

回到顶部