mysql - MySQL中“Group By”的“Order by”结果
问题描述
我有以下表结构
leads
-----
id name
1 Varun
2 Vishal
visitors
--------
id name
1 Rahul
2 Akhshay
assigned_visitors
-----------------
av_id lead_id, visitor_id, visit_date
1 1 1 2020-11-28
2 1 2 2020-12-02
不,我需要显示以下结果集
leads.name visitors.name visit_date
Varun Akhshay 2020-12-02
以下 SQL 将显示正确的 visit_date 但不正确的访客姓名。
select l.*
, l.Name as LeadName
, l.Phone as LeadPhone
, u.*
, u.Name as VisitorName
, u.Phone as VisitorPhone
, SUBSTRING_INDEX(GROUP_CONCAT(DISTINCT visit_date ORDER BY av_id DESC SEPARATOR ','), ',', 1) as max_visit_date
from leads as l
join assigned_visitors a
on l.id = a.lead_id
join users u
on u.user_id = a.visitor_id
where l.Status = 3
group
by l.id
HAVING (date(max_visit_date) BETWEEN '$startdate' AND '$enddate')
order
by max_visit_date DESC
任何帮助都感激不尽。
解决方案
您的查询比您显示的数据复杂得多。如果我假设您想要每个潜在客户的最近访问,那么一种方法是相关子查询:
select l.*, av.*, u.*
from leads l join
assigned_visitors av
on l.id = av.lead_id join
users u
on u.user_id = av.visitor_id
where l.Status = 3 and
av.visit_date = (select max(av2.visit_date)
from assigned_visitors av2
where av2.lead_id = av.lead_id
);
聚合不会是此类查询的有效方法。
推荐阅读
- javascript - Javascript - 如何从正则表达式而不是 [Object object] 返回字符串
- makefile - make 中的 HISMAKEFILE 变量是什么
- python - 从Python中每行中具有不同数量组件的文件中读取数据
- python - 如何使用 Python 的子实例调用在子中重载的父方法
- nginx - 将 htaccess 规则转换为 nginx 服务器块
- google-chrome - 提示框暂停后台脚本发送多个请求
- python - Osintgram 工具不断显示此错误
- uwp - 如何从 Uno 类库中引用 Windows.Storage
- java - org.hibernate.PersistentObjectException:分离的实体传递给坚持:
- apache-spark - Pyspark 将字符串转换为日期时间戳列包含两种不同的格式