相关疑难解决方法(0)

Django中的GROUP_CONCAT等价物

说我有下面的表格fruits:

id | type   | name
-----------------
 0 | apple  | fuji
 1 | apple  | mac
 2 | orange | navel
Run Code Online (Sandbox Code Playgroud)

我的目标是最终得到一个不同types的逗号和逗号分隔的列表names:

apple, 2, "fuji,mac"
orange, 1, "navel"
Run Code Online (Sandbox Code Playgroud)

这可以GROUP_CONCAT在MySQL中轻松完成,但我遇到了与Django等效的问题.这是我到目前为止,但我错过了GROUP_CONCAT这些东西:

query_set = Fruits.objects.values('type').annotate(count=Count('type')).order_by('-count')
Run Code Online (Sandbox Code Playgroud)

我想尽可能避免使用原始SQL查询.

任何帮助将不胜感激!

谢谢!=)

mysql django group-concat

15
推荐指数
4
解决办法
8529
查看次数

将限制设置为array_agg()

我有以下Postgres查询:

SELECT array_agg("Esns".id ) 
FROM public."Esns", 
     public."PurchaseOrderItems" 
WHERE 
    "Esns"."PurchaseOrderItemId" = "PurchaseOrderItems".id 
    AND "PurchaseOrderItems"."GradeId"=2 
LIMIT 2;
Run Code Online (Sandbox Code Playgroud)

限制将影响行.我希望它限制array_agg()为2项.以下查询有效,但我在输出中输入每个条目:

SELECT array_agg ("temp")  
FROM (
    SELECT "Esns".id 
    FROM public."Esns", 
         public."PurchaseOrderItems" 
    WHERE 
        "Esns"."PurchaseOrderItemId" = "PurchaseOrderItems".id 
        AND "PurchaseOrderItems"."GradeId"=2 
    LIMIT 4
) as "temp" ;
Run Code Online (Sandbox Code Playgroud)

这给了我以下输出

{(13),(14),(15),(12)}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

sql arrays postgresql limit

11
推荐指数
2
解决办法
6087
查看次数

标签 统计

arrays ×1

django ×1

group-concat ×1

limit ×1

mysql ×1

postgresql ×1

sql ×1