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 に答える