【发布时间】:2018-10-16 02:29:25
【问题描述】:
我的 SQL 代码有什么问题?
我试图消除answer之后的重复行
但我不断收到以下错误:
“(”附近:语法错误: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 不支持窗口函数。请参阅此相关帖子:stackoverflow.com/q/49069627/460557
-
只使用 distinct:
select distinct yourcolumns from....知道 distinct 适用于所有列... -
添加一些示例数据并从中获得您问题中所需的结果,现在它是XY problem 的一个明显示例,您说出了您想要什么而不是解释您需要什么。
-
@Jorge Campos:(抱歉延迟响应 - timeshift ;)) - 我添加了更多信息。我还认为您使用
DISTINCT的建议让我前进了——如果有一个解决方案我不使用DISTINCT关键字“松散”col_1 和col_4 信息,这仍然是个问题? -
啊 - 也许是 Gordon Linoff 的解决方案? (我刚看到它进来了……)
标签: sql sqlite row-number