mysql – 我可以安全地在SQL查询中使用两个MAX调用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 我可以安全地在SQL查询中使用两个MAX调用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1834字,纯文字阅读大概需要3分钟。
内容图文
![mysql – 我可以安全地在SQL查询中使用两个MAX调用](/upload/InfoBanner/zyjiaocheng/905/3c09a14bc80741c0ad5ae08e6d779c0d.jpg)
我有一个包含数十万条目的表,我正在尝试使用查询来获取特定receiver_id的结果集,并通过sender_id对它们进行分组.我当前的SQL查询有效,但我想知道在语句中使用两个MAX调用是否存在任何潜在问题.它看起来像这样:
SELECT MAX(id) as id, sender_id, receiver_id, MAX(date) as date
FROM messages
WHERE receiver_id=5 and belong_to=5
GROUP BY sender_id
表格日期如下所示:
id sender_id receiver_id content date belong_to
-- --------- ----------- ------- ------------------- ---------
1 5 7 test 2013-03-11 10:33:54 7
2 5 7 test 2013-03-11 10:33:54 5
3 13 7 test 2 2013-03-13 12:01:36 7
4 13 7 test 2 2013-03-13 12:01:36 13
5 5 7 test 3 2013-03-14 09:15:37 7
6 5 7 test 3 2013-03-14 09:15:37 5
7 25 5 data1 2013-03-15 11:01:36 5
8 25 5 data1 2013-03-15 11:01:36 25
9 16 5 data2 2013-03-17 09:17:17 5
10 16 5 data2 2013-03-17 09:17:17 16
11 25 5 data3 2013-04-05 09:17:17 5
12 25 5 data3 2013-04-05 09:17:17 16
我查询的输出是这样的:
id sender_id receiver_id date
-- --------- ----------- -------------------
9 16 5 2013-03-17 09:17:17
11 25 5 2013-04-05 09:17:17
使用MAX调用此查询是否有任何问题?如果是这样,替代方案是什么?
解决方法:
我不太了解你的结构(所以,例如,这个例子假设一个UNIQUE键可以强加给sender_id,receiver_id,date,belongs_to),但我怀疑你想要这样的东西.必要时由用户过滤..
SELECT x.*
FROM messages x
JOIN
( SELECT sender_id
, receiver_id
, MAX(date) max_date
FROM messages
GROUP
BY receiver_id
, sender_id
) y
ON y.sender_id = x.sender_id
AND y.receiver_id = x.receiver_id
AND y.max_date = x.date
WHERE x.belong_to = x.receiver_id;
内容总结
以上是互联网集市为您收集整理的mysql – 我可以安全地在SQL查询中使用两个MAX调用全部内容,希望文章能够帮你解决mysql – 我可以安全地在SQL查询中使用两个MAX调用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。