1

VISITS現在のテーブルを考えてみましょう:

ID   ID_PERSON  DATE
1    1          10/12/2012
2    5          10/12/2012
3    11         10/12/2012
4    55         10/13/2012
5    12         10/13/2012
6    6          10/14/2012
7    10         10/15/2012
8    13         10/15/2012
9    11         10/15/2012
10   5          10/16/2012

私が必要とするのは、1 日あたりの訪問のカスタム順序を作成することです。

日付10/12/2012の場合は1、2、3、日付10/13/2012の場合は1,2など。

最初はランダムにすることができますが、ユーザーは注文を作成することができますが、これは現時点では問題ではありません。

このテーブルにランダムな順序の列を追加する SQL コマンドは何ですか?

考えられる結果:

ID   ID_PERSON  DATE         ORDER_IN_DATE
1    1          10/12/2012   2
2    5          10/12/2012   3
3    11         10/12/2012   1
4    55         10/13/2012   1
5    12         10/13/2012   1
6    6          10/14/2012   1
7    10         10/15/2012   1
8    13         10/15/2012   3
9    11         10/15/2012   2
10   5          10/16/2012   1

順序付けルール: 最初にORDER_BY_DATE列を作成するときはランダムです。(もちろん、自動増加値もランダムとしてカウントされます)。

解決策: 列VISITを追加するために表を更新する。b.次のクエリを実行します。ORDER_IN_DATE

UPDATE VISIT
SET ORDER_IN_DATE = (SELECT TEMP_ORDER 
                     FROM (SELECT  V.ID AS TEMP_ID, 1 + ROWID % (SELECT COUNT(*)
                                                                 FROM VISIT
                                                                 WHERE DATE = V.DATE
                                                                ) AS TEMP_ORDER
                           FROM VISIT V
                           ORDER BY DATE, RANDOM())
                     WHERE ID = TEMP_ID);
4

1 に答える 1

1

質問が正しければ、最初に日付で並べ替えてから、日付内の訪問をランダム化してください。

その場合、これはあなたのために働くはずです:

SELECT * FROM visits
ORDER BY date, random()

編集

日付内の注文を追加の列として保存する場合は、これを使用しますorder_in_date

SELECT *,
    1 + rowid % (
        SELECT count(*) FROM visits
        WHERE date = v.date
    ) AS order_in_date
FROM visits v
ORDER BY date, random()
于 2012-12-18T08:42:25.207 に答える