簡體   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