CREATE TABLE order
(id
int(11) NOT NULL AUTO_INCREMENT,orderid
varchar(120) COLLATE utf8_bin NOT NULL,amount
decimal(10,2) NOT NULL,userid
bigint(20) DEFAULT NULL COMMENT '用户ID',crtime
int(11) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=MyISAM CHARSET=utf8
如题,怎么样查今天首充的用户?(首充指之前注册的用户ID首次充值产生的收入)
谢谢!
我的思路是先查时间是今天的 然后用函数查询时间最小的那一组,最后外联b表
SELECT * FROM ordergather WHERE id>=507132 && id<=513409 && userid NOT IN (SELECT userid FROM ordergather B WHERE B.id<507132);
因为数据量太大,一运行就挂掉。。。。
我自己写的sql是
SELECT A.userid FROM order A
LEFT JOIN (SELECT userid FROM order WHERE id ON A.userid=B.userid
WHERE A.crtime>=1488816000 && A.crtime<=1488902399 && B.userid is NULL
但运行速度太慢了,哪位大神有更好的方法?