SELECT COUNT(dev_link.id) c, pattern.direction, pattern.section, (
SELECT to_stop AS `stop`
FROM dev_link d
WHERE d.section = section
ORDER BY d.sequence DESC
LIMIT 1
) code
FROM pattern
INNER JOIN dev_link ON dev_link.section = pattern.section
WHERE pattern.service = "YSEO252"
GROUP BY pattern.code
ORDER BY c DESC
上面是一个查询及其结果。目前这选择了太多数据,我需要将其缩小到以下范围:
1 行方向为outbound
,另一行方向为inbound
。如果只是我可以轻松地 GROUP BY
方向。但是,我需要选择具有最高 c
值的 inbound
和 outbound
行。所以根据上面的结果,第一行和第三行将被选中。
如何更改我的查询以使其返回这些行?
最佳答案
( SELECT ... WHERE ... AND pattern.direction='inbound' ... LIMIT 1)
UNION ALL
( SELECT ... WHERE ... AND pattern.direction='outbound' ... LIMIT 1 );
否则,每个 SELECT 都像原来的一样。
关于具有最高 COUNT 的 MySQL GROUP BY 字段(基于 JOIN),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29561818/