我该如何识别数据库中是否添加了新客户端。
我在考虑通过日期字段来识别它。
id client_name date_added
---------------------------------
1 ABC 2013-01-02
2 XYZ 2013-01-03
3 EFG 2013-01-02
4 HIJ 2013-01-05
正如您可以在2013-01-05看到一个新的客户端添加了HIJ。
我看到了这样的结果:
Client List
Total NO: 4
New Client
Total No: 1
Client Name: HIJ
向表中添加一个字段new
,默认为1,在页面加载时使用该字段进行选择,并将其设置为0以指示其不再是新字段。
很难说,但根据您的评论。。。我的推荐日期是1个月间隔你可能正在寻找类似的东西
SELECT id, client_name, new_count, total_count
FROM
(
SELECT id, client_name
FROM clients
WHERE date_added BETWEEN CURDATE() - INTERVAL 1 MONTH AND CURDATE()
) c CROSS JOIN
(
SELECT
(
SELECT COUNT(*) new_count
FROM clients
WHERE date_added BETWEEN CURDATE() - INTERVAL 1 MONTH AND CURDATE()
) new_count,
(
SELECT COUNT(*) total_count
FROM clients
) total_count
) t
显然,在这个查询中,您可以很容易地将CURDATE()
与过去的任何其他参考日期一起更改,并获得该日期的结果。
假设您有以下样本数据
+------+-------------+------------+|id |客户端名称|日期|+------+-------------+------------+|1|ABC | 2013-05-13||2|XYZ|2013-06-13||3|EFG|2013-06-13||4|HIJ|2013-08-11|+------+-------------+------------+
如果今天是2013-08-13
,那么查询的输出将是
+------+-------------+-----------+-------------+|id |客户端名称|新计数|总计数|+------+-------------+-----------+-------------+|4|HIJ|1|4|+------+-------------+-----------+-------------+
您可以记住,在您的网页或PHP脚本中,以前看到的最高ID值。或者以前看到的最高时间戳(比日期更好)。
对于与并发相关的东西(锁定、查找最新的等等),我更喜欢ID或版本号——因为它们应该被定义为升序,不会遭受"相同毫秒"的冲突,而且效率更高。
我假设您将把应用程序的"状态"(关于用户看到的内容)保存在表单中的隐藏字段中,或者类似的内容中。这将跟踪"最后一次看到",并允许您识别自上次页面查看以来的"新添加"。
如果您希望在来自不同页面或登录到应用程序时识别新添加的内容,则需要将"状态"存储在数据库中。
这取决于您认为的新功能。您必须定义要将记录与什么进行比较(参考日期)。一旦定义了它,就可以使用如下查询:
从客户端选择*WHERE date_added>='$date'
其中$date是参考日期。