我在SQL Server中有一个表,其中包含7列:
----------------------------------------------------------------------------------------
id | Source_Node | Source_Node_Type | Target_Node | Target_Node_Type | Year | Edge_Type
----------------------------------------------------------------------------------------
1 10965 2 23036 3 2005 2
2 10965 2 23036 3 2005 2
3 2947 2 23036 3 2005 2
4 37529 4 23036 3 2005 4
...
...
虽然我都数不过来的只有两列的基础DISTINCT行即Source_Node
与Target_Node
如行与id
1和2有相同的价值观Source_Node
和Target_Node
,所以这应该是得到计数一次。我已经尝试查询为:
SELECT COUNT(*) FROM GraphEdges
WHERE Source_Node IN (...Node_List...)
AND Target_Node IN (...Node_List)
尝试查询时,它的计数为58。
SELECT DISTINCT Source_Node, Target_Node FROM GraphEdges
WHERE Source_Node IN (...Node_List...)
AND Target_Node IN (...Node_List...)
它提供了53行,这是我需要的数字,但是却提供了整行,而我需要COUNT图,即53。
如何修改查询?
谢谢!
您可以将其与另一个选择包装在一起,如下所示:
SELECT COUNT(*) FROM (
SELECT DISTINCT Source_Node, Target_Node FROM GraphEdges
WHERE Source_Node IN (...Node_List...)
AND Target_Node IN (...Node_List...))
或没有子查询的解决方案:
SELECT count(distinct concat(Source_Node,Target_Node))
FROM GraphEdges
WHERE Source_Node IN (...Node_List...)
AND Target_Node IN (...Node_List...))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句