1

我有一个疑问:-

result = db(db.tag_count.user_id == user_id).select(db.tag_count.name, db.tag_count.count, orderby=~ db.tag_count.count, limitby=(0, 10))

表定义为

db.define_table('tag_count',
                Field('name'),
                Field('user_id', db.auth_user),
                Field('count', 'integer'),
                format='%(title)s')

查询的目的是返回包含 tag_count 最高整数值的前 10 行。

事实上,它返回 tag_count 的最高字符串值,例如 21 , 2, 12, 2 ,即 2>12 。我预计 21、12、2、1

我使用 web2py 2.3.2 和 sqlite 作为数据库。

知道我做错了什么吗?

4

1 回答 1

1

为了以后像我这样的人。感谢安东尼在上面的评论。

原表没有将字段定义为整数,默认为字符串。我意识到我需要一个整数并更新了该字段。SQlite 无法迁移类型,因此它仍然是一个字符串。

解决方案是导出表,用整数重新创建表,并确保重新插入类型为整数。

请参阅此处了解更多详细信息

于 2013-02-17T14:43:50.007 回答