【发布时间】:2012-02-19 18:54:25
【问题描述】:
我有一个包含以下列的 MySQL 数据库表
ID
status (can contain values 0, 1, 2)
timepstamp
text
note
owner
我想从表中获取有关特定所有者条目的以下信息:
number of entries
number of entries where status=0
number of entries where status=1
number of entries where status=2
number of entries where LENGTH(note)>0
minimum timestamp
maximum timestamp
我曾经阅读完整的数据集,然后使用 PHP 评估它们
SELECT status, timestamp, LENGTH(note)>0 WHERE owner="name";
我的问题是某些用户的条目太多,如果我将数据读取到 PHP,我经常会遇到内存不足的错误。我认为让 MySQL 评估数据应该更好。我无法编写可以完成此任务的查询。
SELECT
MIN(timestamp) AS mintime,
MAX(timestamp) AS maxtime,
COUNT(*) AS number,
...
WHERE owner="name"
是否有可能一次性获得结果?例如,在 COUNT 内使用嵌套的 WHERE 或 IF?
COUNT(WHERE status=0) AS inactive
COUNT(IF(status=1)) AS active
...
你会如何解决这个问题?
【问题讨论】: