A. sql如何一次取出2天的数据(有时候某些天没数据),求思路
按照你给的说法和例子( 1号3条数据,2号没有数据,3号2条数据,),那么所谓的一次两天,应该是取出1号和3号的5条数据,是这个意思吧。
假设4,5号都有数据,那么现在是(1有数据,2没数据,3有数据,4有数据,5有数据)其他不算,就说这五天
那么你说的一次取出两天的数据怎么取?从后往前,还是从前往后,亦或是随便取?还是多次取,每两天的都取出来?给的需求并不是十分明确。
个人认为最大的可能是从后往前,或者某一个时间段往前或者往后。
如果是数据块的话很好写,定义两个变量,两个初始都是0,我们假设为a,b,a代表有数据天数,b代表天数。输入当前日期(查询日期),然后在表内对当前日期进行count计数,如果计数不为0,那么a=a+1,b=b±1(根据向前还是向后查询自己分配),如果计数为0,那么只b±1,然后判断一下a是否等于2,如果a不等于2,那么继续循环,直到循环出现两个计数不为0的天,那么a=2了,然后就能退出循环,这是查询出的内容就是两天的。
如果是单条sql的话,考虑到查询的当天可能也没有数据,比如你要查询2号(包含)往后的两天(一般来说是2号和3号的数据),但是2号没有数据,所以输出的应该是3号和4号的数据。
单独的sql好像能写出来,我说一个思路,开窗函数,你对找出来的数据,比如大于等于2号的数据进行排序,这个排序是开窗(oracle的话这里用rank,其他数据不知道),其他数据库不知道)的排序,(不分组,按照日期的截取到日去排序,也就是不算具体的时间,而是1号,2号,这样的排序)这时,3号的所有数据会被标记为1,4号的所有数据被标记为2,然后再截取排序号小于等于2的就可以了。
其他的还有,不过要么是计数,要么是开窗排序,而且不一定能写出来,或者就算写出来了,可能也比较耗费资源,估计可用性不大。
B. php用表单提交到mysql数据库,但是数据库奇怪的出现两天一模一样的数据怎么回事
把a标签提交的事件改成这样:
<a href="javascript:document.getElementById('ms').submit()" >提交</a>
然后把php后端这句去掉:
mysql_query($sqlInsert);
这样就可以了
C. sql语句怎么查数据库最新两天的数据
整个数据库最新两天的数据吗?这个好难。除非你的每一个表都有新增时间这样的字段标识,就可以根据这个时间字段进行查询。
如果你有做备份的话,可以还原一个两天前的备份,然后逐表对比两个数据库的不同数据。