繁体   English   中英

选择VARCHAR列的最大值-MySQL

[英]Select max value for a VARCHAR column - MySQL

我的邮件收件箱概念电子邮件表格是该表格中的主要表格。 我想获取由特定电子邮件发送的最后一条消息。

tbl_msg:

id
email
msg

示例数据:

Id  email            msg
1   xyz@gmail.com    This is test    
2   abc@gmail.com    All is well
3   xyz@gmail.com    This is test2

我想获取每封电子邮件和味精的最新外观

Id  email            msg

2   abc@gmail.com    All is well
3   xyz@gmail.com    This is test2

我试过的

SELECT cnote.`id`,cnote.`email`,cnote.`msg` FROM `tbl_msg` cnote inner join (select distinct email,id from client_com group by email) as note
on cnote.id=note.id

指导我如果我错了

要获取表中每个电子邮件地址的最新消息您不需要JOIN ,只需执行ORDERGROUP BY

SELECT `id`, `email`, `msg`
FROM `tbl_msg`
GROUP BY `email`
ORDER BY `id` DESC

使用此查询:

SELECT m1.* FROM tbl_msgs m1 LEFT JOIN tbl_msgs m2  ON (m1.email = m2.email AND m1.id < m2.id) WHERE m2.id IS NULL;

这将与同一张表连接,条件为m1.id < m2.id ,将获得最新的表。

另一种选择是使用子查询:

SELECT * FROM tbl_msgs WHERE id IN (SELECT MAX(id) FROM tbl_msgs GROUP BY email);

您可以使用以下查询:

SELECT id, email, msg FROM you_table 
GROUP BY email
ORDER BY id DESC

有了这个,您每封电子邮件将只有1行,并且由于ID DESC的排序,您将拥有最后一行。

如果您正在运行PDO连接(我知道的连接方式,不确定是否有MySQLi方式)

$theLastIdGiven = $handlerDbConnection->lastInsertId();

或者,如果您想通过查询运行它并获得最后的结果,只需添加ORDER BY id DESC LIMIT 0, 1它将按id降序排列数据,然后获取数据的第一位:)

希望这对您有所帮助!

选择ID,电子邮件,来自tbl_msg的消息在哪里输入ID((从tbl_msg GROUP BY电子邮件中选择MAX(ID))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM