簡體   English   中英

當列為varchar時,django從mysql中選擇max字段

[英]django select max field from mysql when column is varchar

使用Django 1.1,我試圖從varchar列(在MySQL中)中選擇最大值。存儲在該列中的數據如下所示:

9001
9002
9017
9624
10104
11823

(實際上,這個數字要大得多。)

這一直有效,直到數字增加到10000以上:

Feedback.objects.filter(est__pk=est_id).aggregate(sid=Max('sid'))

現在,同一行將返回9624而不是11823。

我可以直接在數據庫中運行查詢,該查詢可以滿足我的需求,但是我無法找出在Django中執行此操作的最佳方法。 該查詢將是:

select max(sid+0) from Feedback;

任何幫助將非常感激。

謝謝!

本着“任何幫助將不勝感激”的精神,您應該弄清楚為什么它停止在Django(但顯然不在MySQL內)內部工作-10,000。

正在生成什么查詢? 有關如何找出該問題的信息 ,請參見此問題

我懷疑是因為您要在查詢中添加+0以使排序數字成為數字。 我認為Django自然不支持此功能,因此您有兩種選擇:

  • 人們無疑會想知道為什么您要存儲一個數字並在VARCHAR列中要求最大數量。 您可以將列更改為數字數據類型
  • 每當您想要進行一些自定義SQL調用而Django 還不支持它時,您可以做您必須做的事情: 編寫自己的原始SQL
  • 編輯:您也可以修補Django,但這可能是MySQL特有的,因此選項#2可能是最好的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM