如何查询MySQL数据库以确定用户是否已连续登录30天或100天?同样也适用于其他用户操作。
假设如下所示的DB表,为当天活动的每个用户每天创建一条记录。
我如何查询SELECT * WHERE user_id = 1 AND action = login,并找出是否有30天或100天的登录,其中的日子是连续的,没有休息日在其中?
用户统计表
id
user_id
dateTime
action (login, made post, up voted, down votes, made comment, etc...)
我有网站,在那里用户可以张贴他们的文章,我想给每个文章的访问和参考其作者的完整统计数据。在这里,实现似乎非常简单,只需为每次访问存储一个数据库记录,然后使用聚合函数来绘制图形等等。
问题是,文章在24小时内获得了大约30万的浏览量,而在短短一个月内,统计表将获得大约900万条记录,这是一个非常大的数字,因为我的服务器并不是很强大。
对于这类任务有解决方案吗?是否有算法或缓存机制可以在不损失准确性的情况下存储长期统计数据?
附注:这是我的原始统计表:
visitid INT
articleid INT
ip INT
datetime DATETIME
我尝试在MySQL数据库中搜索特定于用户的网站活动,为此,我创建了一个表单和流程来搜索统计表,并返回具有与查询匹配的userID的每条记录。然而,我一直收到这条消息,但不确定为什么:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@hotmail.com' at line 1
这是我正在使用的表单
<form method='get
我正在试着为下面的逻辑写mysql程序,
select id, fullname from users where fullname like concat(lastname, ' ', firstname, ' (' , middlename, '%');
如果上述查询返回0条记录,则
select id, fullname from users where fullname like concat(lastname, ' ', firstname, '%');
.... few more querie
快速方法描述:
我有两张桌子,我们把它们命名为第一桌和第二桌。每个表记录都有其作者(用户)的id。每个用户的记录没有限制。
我想为每个用户运行一个统计页面。
例如,当John登录时:
A类(名单)的20 %-B类的150 (名单)
演示代码
$a = mysql_query("SELECT * FROM A WHERE userID='$userID'");
$b = mysql_query("SELECT * FROM B WHERE userID='$userID'");
$a_num=mysql_num_rows($a);
我艾米试图为特定网站的营销问题建立一个统计表:
目前,我计划构建这样的表
Source_IP source_city Destination_IP destination_city
127.0.0.1 NY 242.212.12.1 Paris
242.212.12.1 Paris 127.0.0.1 NY
我想防止像上面这样的情况,即(Source_ip,source_city)和(Destination_IP destination_city)的组合应该只是一条记录,而不是2条
我希望发布这篇文章是合法的,因为我知道关于这个话题的其他类似的文章。但我无法得到其他解决方案的工作,所以试图张贴我自己的方案。在其他类似的例子中,我不确定它们是如何使用表名和行的。是通过标点符号吗?
SELECT bloggers.*, COUNT(post_id) AS post_count
FROM bloggers LEFT JOIN blogger_posts
ON bloggers.blogger_id = blogger_posts.blogger_id
GROUP BY bloggers.blogger_id
ORDER BY post_cou
table:
name date object
james 25/04/2017 bycicle
insert into statisticstable
select * from table;
我想写一个函数,只有当名称和日期还没有在统计表中时,才更新表统计数据。如果统计表中有名称和日期,则不更新表统计,否则,如果统计表中没有名称和日期,则更新表统计。
如下所示:
CREATE FUNCTION update_table()
DECLARE
name = &name
date = &date
if &name and &date are
我正在使用下面的Sql查询:
$query = mysql_query("SELECT * FROM `venues`
LEFT JOIN `follows` USING (venue_id)
LEFT JOIN `stats` USING (venue_id, user_id)
WHERE follows.user_id = $userid");
问题是它没有在统计表中显示一些字段。
因此,我认为问题可能出在(可能是错误的),我需要选择该表的所有字段?
如果是这样的话,有没有办法告诉它选择3个表的字段?
例如:
SELECT * FROM `venues`, SELECT
我正在运行一个简单的查询来从地址表中提取地址,还有一个额外的人口统计表,它有一个名为FieldName的字段,它可能有一个值"DoNotMail“,它更像是一个字段标签。在同一个表中还有另一个名为ValueString的字段,它可能有一个关联值DontMail,这是该字段的实际值。 我有一个case语句,只从人口统计表中提取与DoNotMail值相关的值。也许有一种更好的方法在where子句中使用它? SELECT DISTINCT
CASE WHEN CUSTOMV.FieldName = 'do_not_mail_option
我想要创建一个PHP页面,它从MySQL数据库中随机选择一个记录(一个字符串,它将用作唯一的“令牌”)。我只想选择这个随机记录一次,以后再也不会。
为了做到这一点,我向表中添加了一个额外的字段(名为‘number field’,包含数字0),该字段在特定记录被选中时会增加。这样,只能选择数字字段表字段中具有0值的记录。一旦选择了随机记录,数字字段字段就会增加到1,不能再被选择了。我正在考虑使用以下PHP代码:
$result = mysql_query("SELECT token FROM table WHERE numberfield < **1** ORDER BY RAND