Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Django查询仅对特定列计数_Sql_Django_Count_Django Queryset - Fatal编程技术网

Sql Django查询仅对特定列计数

Sql Django查询仅对特定列计数,sql,django,count,django-queryset,Sql,Django,Count,Django Queryset,为什么Django的count()会产生类似这样的SQL查询 选择计数(*) 有没有一种方法可以仅仅依靠一列数据 例如,具有具有以下行的模型: -身份证 -名字 -姓 与在类似于“选择计数(id、名字、姓氏)”的*上运行计数不同,我只想运行 选择计数(id) 或者最好执行选择计数(1)。我想这样做是因为我曾经听说,对于大型桌子来说,这样做会更快 注意:如果不是更快,问题是如何使用Django进行查询。因此,请不要用将其标记为重复。如果目的是计算列x中没有空值的行,则应使用Django的聚合:

为什么Django的
count()
会产生类似这样的SQL查询

选择计数(*)
有没有一种方法可以仅仅依靠一列数据

例如,具有具有以下行的模型: -身份证 -名字 -姓 与在类似于“选择计数(id、名字、姓氏)”的
*
上运行计数不同,我只想运行

选择计数(id)
或者最好执行
选择计数(1)
。我想这样做是因为我曾经听说,对于大型桌子来说,这样做会更快


注意:如果不是更快,问题是如何使用Django进行查询。因此,请不要用

将其标记为重复。如果目的是计算列
x
中没有空值的行,则应使用Django的
聚合

MyModel.objects.aggregate(Count('x'))
但是,如果您的目的是加快查询速度,那么这是毫无意义的,因为
SELECT COUNT(*)
SELECT COUNT(x)
的速度与前面解释的速度完全相同。

试试这个

Entry.objects.values_list('field_name', flat=True).count()

你说的“一行数”是什么意思?你到底想数多少?“请具体点。”迪克格洛顿我更新了问题。希望这能让事情变得更清楚。注意:如果您对可能包含空值的列执行
COUNT(id)
,您将收到不同的结果,因为包含空值的行将不会被计数。如果您确实需要,请使用Django的
aggregate