懂SQL的进

懂SQL的进,第1张

MOD(被除数,除数)
功能返回两个数值相除后的余数
返回结果:
一、余数的正负号与除数相同,如果被除数与除数相同,那么函数值即为两相除的余数
如MOD(10, 3) 结果为1 MOD(-10, -3) 结果为 -1;
二、如果被除数与除数异号,则函数值为两数相除的余数再加除数的值
如MOD(10,-3) 结果为 -2 MOD(-10,3) 2

不知道你是什么数据库,如果是oracle,或者有rownum的话,那么可以用取余数的办法,比如想每隔5条取一条数据。
那么就先用rownum确定每行的号码,然后用每行的号码除以5,取余数,余数为1,2,3,4,0中你可以取任何一个,这样就等于是每个5个取一行了。
至于没有rownum的数据库,那么可能要通过id什么的来取了。
可能还有其他方式方法,不过暂时我还没有想到。

sql可以用以下方法计算到期还剩几个月的月份:
1、首先需要找到一个带日期字段的数据表。
2、接下来向表中插入日期值。
3、然后通过month函数获取月份即可,注意month里添加的是列名。
4、运行SQL语句以后我们发现日期中的月份已经被提取出来了,就可以知道还剩几个月的月份了。

就你这个问题,我给你个建议,可以这样
select top(select count()from table)%2 from table TrackAction=登入 order BY TrackTime desc
解释 (select count()from table)%2 取余数 就知道最近登入人数。
上面整个就是最近登入没有登出的。
然后创建一个临时表
create table log (l_id int identity,l_log text,l_time datetime default getdate())
让id自加
先把select top(select count()from table)%2 from table TrackAction=登入 order BY TrackTime desc
这些数据插入
然后可以得到
select from table where UserTracksID not in
(select top(select count()from table)%2 UserTracksID from table TrackAction=登入 order BY TrackTime desc)order BY TrackTime desc
因为UserTracksID 是唯一的,这样排除了我们前面查处的数据。
然后把后面的数据插入临时表
最后select from log order BY id 就OK了
换色就根据(select count()from table)%2 得到的数目来改变最前的多少行。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13373108.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-23
下一篇 2023-07-23

发表评论

登录后才能评论

评论列表(0条)

保存