MySQL 使用 Group Bu 返回不正确的值

标签 mysql max groupwise-maximum

<分区>

我正在尝试从事件表中为帐户中的每个用户选择最新的 RowID。但每次我运行查询时,它都会返回正确的 RowID,但其他信息似乎是随机选择的,因为主题和日期总是来自较早的 RowID。

为什么 MySQL 选择了正确的最新 RowID 但随后为 SubjectDate 等返回随机值。

`

SELECT 
MAX(activities.rowid) as RowID,
contacts.firstname as First, 
contacts.lastname as Last,
activities.visiondescription as Subject,
smsreceived as Date
FROM activities, contacts 
WHERE activities.contactid=contacts.contactid 
AND activities.accountid=contacts.accountid
AND activities.accountid = 'AAXA-S0BJ7I'
group by activities.RowID;

有人看到我可能做错了什么吗? 我已尝试使用 activities.ContactID、activities.SMSReceived 分组,但仍然不开心。

谢谢

最佳答案

尝试这样的事情:

SELECT contacts.contact_id,       
   contacts.firstname as First,
   contacts.lastname  as Last,
   GROUP_CONCAT(DISTINCT IF(activities.rowid = MAX(activities.rowid),visiondescription,NULL))  AS Subject
   GROUP_CONCAT(DISTINCT IF(activities.rowid = MAX(activities.rowid),smsreceived,NULL)) AS `Date`
FROM activities, contacts 
WHERE activities.contactid=contacts.contactid 
AND activities.accountid=contacts.accountid
AND activities.accountid = 'AAXA-S0BJ7I'
GROUP BY contacts.contact_id;

这里的想法是,所需的信息属于用户,因此 GROUP BY 需要针对用户。 GROUP_CONCAT 将仅在分组的行中挑选出满足 IF 条件的行。

-- 只是一个想法

关于MySQL 使用 Group Bu 返回不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20648276/

相关文章:

r - 在R的3列中找到每一行的最大值

MySQL - 根据最新日期和每列的 id 列表将行转换为列

java - 从 jComboBox(Java 数据库)中选择时用记录填充 jTextField

mysql - Sqlzoo 使用 EXCEPT

mysql - 如何从生产 MySQL 中删除大量行/数据

mysql - SQL 仅选择列上具有最大值的行

mysql - 检索每个组中的最后一条记录 - MySQL

mysql - 如何在 MariaDB 10.2.6 中升级 MySQL

sql - 如何使用 SQL 从每个组中获得最高得分球员?

java - 应用程序服务器最大内存限制