Mysql按功能分组

标签 mysql

这是我的 table :

Id customer email        timestamp             store_id
1    1      abc@xx.com   2014-04-11 17:06:21   5416
2    0      xyz@xy.com   2014-04-11 15:05:23   5416
3    1      abc@xx.com   2014-04-11 17:55:34   5416
4    2      bca@bc.com   2014-04-11 17:55:34   5416

我的查询是:

SELECT *, count(*) as total FROM `tybo_orders` 
WHERE timestamp IN (SELECT max(timestamp) FROM `tybo_orders`
GROUP BY email) AND store_id='5416' GROUP BY email

customer 列中的值为 0 表示访客,大于 0 表示客户 ID。如果 customer 为 0,我想按 email 分组,否则按 customer 分组。怎么可能?

最佳答案

尝试这样

SELECT *, count(*) as total 
FROM `tybo_orders` 
WHERE timestamp IN (SELECT max(timestamp) FROM `tybo_orders` GROUP BY email) 
AND 
store_id='5416' 
GROUP BY 
case when customer=0 then customer else email end

关于Mysql按功能分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23026214/

相关文章:

php - 是否有任何 CakePHP 函数可以构建并执行查询而不返回结果集

mysql UPDATE 行包含来自另一个表的数据的最高值

mysql - 如果另一个字段包含字符串,则在 mysql 子选择中返回 true 或 false

sql - MySQL——标记除 1 个匹配行之外的所有行

mysql - R 中指向数据库的类似指针的变量

MySQL 更新导致列值在查询中途更改

mysql - Node JS在使用事务时将对象数组插入mysql数据库

java - 如何使用 Java 更改 mm-dd-yyyy(来自 csv 文件的数据)的格式以在 MySql 中存储为 yyyy-mm-dd

mysql - 限制结果集中元素的数量

mysql奇怪的查询行为