Sqlite 通过按日期自定义记录顺序增强数据库表

Sqlite 通过按日期自定义记录顺序增强数据库表,sqlite,sql-order-by,Sqlite,Sql Order By,想想当前的访问表: 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

想想当前的
访问
表:

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
我需要的是创建每天访问的自定义顺序:

日期为2012年12月10日的订单为1,2,3,日期为2012年13月10日的订单为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
订购规则:首次创建“按日期订购”列时为随机。(当然,自动增加值也是随机的)

解决方案: a.更新表
访问
在日期列中添加
订单,b.执行以下查询:

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);

如果我答对了你的问题,你想先按日期排序,然后在日期内随机访问

在这种情况下,这应该适用于您:

SELECT * FROM visits
ORDER BY date, random()
编辑

如果要将日期内订单保存为日期中的附加列,请使用此选项:

SELECT *,
    1 + rowid % (
        SELECT count(*) FROM visits
        WHERE date = v.date
    ) AS order_in_date
FROM visits v
ORDER BY date, random()

如果我答对了你的问题,你想先按日期排序,然后在日期内随机访问

在这种情况下,这应该适用于您:

SELECT * FROM visits
ORDER BY date, random()
编辑

如果要将日期内订单保存为日期中的附加列,请使用此选项:

SELECT *,
    1 + rowid % (
        SELECT count(*) FROM visits
        WHERE date = v.date
    ) AS order_in_date
FROM visits v
ORDER BY date, random()

不清楚您想要什么输出顺序。你能举例说明结果应该是什么样的,你的排序标准是什么吗?你想要什么样的输出顺序还不清楚。你能举个例子说明结果应该是什么样的,你的排序标准是什么吗?我想保存顺序。它必须是100%SQL吗?使用一些脚本(Perl、PHP等)很容易保存由
random()
生成的顺序是的,因为这是一个模式更新,不能用代码来完成。我已经彻底检查了它-在您的示例中效果很好。你确定它不起作用吗?对不起,我的错。我没有注意到日期年的不同。我希望保存订单。它必须是100%SQL吗?使用一些脚本(Perl、PHP等)很容易保存由
random()
生成的顺序是的,因为这是一个模式更新,不能用代码来完成。我已经彻底检查了它-在您的示例中效果很好。你确定它不起作用吗?对不起,我的错。我没有注意到年份的不同。