Sql 比较两列并计算结果行
我想计算数据集中每一行的Sql 比较两列并计算结果行,sql,sqlite,Sql,Sqlite,我想计算数据集中每一行的sqlite文件的第一列和最后一列相同的次数。数据集有1600多万行,效率非常重要 我试过: SELECT * FROM tab WHERE [0] = [3] 但它不起作用。可能是因为它将每行的第一列与同一行的最后一列进行比较 假设这是我的数据集: 0 |1 |2 |3 | -------------------------------------- 2005:67 |ytg |6utgjgt |786:
sqlite
文件的第一列和最后一列相同的次数。数据集有1600多万行,效率非常重要
我试过:
SELECT * FROM tab WHERE [0] = [3]
但它不起作用。可能是因为它将每行的第一列与同一行的最后一列进行比较
假设这是我的数据集:
0 |1 |2 |3 |
--------------------------------------
2005:67 |ytg |6utgjgt |786:09 |
2005:903 |467 |009 |2005:67 |
2005:444 |355 |785 |2005:450|
2005:450 |355 |785 |N/A |
2005:934 |467 |009 |N/A |
2005:000 |355 |785 |2005:450|
2005:987 |355 |785 |2005:450|
--------------------------------------
输出应如下所示:
0 |1 |2 |3 |4 |
-----------------------------------------------
2005:67 |ytg |6utgjgt |786:09 |1 |
2005:450 |355 |785 |N/A |3 |
2005:934 |467 |009 |N/A |0 |
-----------------------------------------------
删除第4列与其中一行的第一列相同的行,但对其进行计数。(一行的第四列不可能与多行的第一列相同。并且每行的第一列值相同)
大家能帮帮我吗?我是一个新手,非常感谢代码中的一些解释。感谢您不存在:
select t.*,
(select count(*) from tab where [3] = t.[0]) [4]
from tab t
where not exists (
select 1 from tab
where [0] = t.[3]
)
请参阅。结果:
为什么
2005:934
包含零计数,而不是像2005:444
这样的其他计数?2005:444被删除,因为它的第四列是2005:444,它等于其中一行的第一列。
| 0 | 1 | 2 | 3 | 4 |
| -------- | --- | ------- | ------ | --- |
| 2005:67 | ytg | 6utgjgt | 786:09 | 1 |
| 2005:450 | 355 | 785 | N/A | 3 |
| 2005:934 | 467 | 009 | N/A | 0 |