这个问题在这里已经有答案了:
获得每组分组结果的前n个记录(11个答案)
两年前关门了。
在mysql中,有没有其他方法可以在不使用组连接和子字符串索引技巧的情况下达到与下面的查询相同的效果?
当我每场演出有几千张票的时候,这个查询有多糟糕?
重点是按性能对票证进行分组,在这些组中按状态排序票证,然后选择first ticket.id per group。
SELECT SUBSTRING_INDEX(GROUP_CONCAT(id ORDER BY status), ',', 1)
FROM ticket
GROUP BY performance_id
在其他引擎中,我会使用这样的东西:
SELECT FIRST(t.id)
FROM (SELECT * FROM ticket ORDER BY status) AS t
GROUP BY performance_id
但是mysql没有第一个或相关的操作符。
1条答案
按热度按时间fquxozlt1#
试试这个:
如果需要第一个id(升序模式)
所以如果你有同一组的票1,2,3,你就只有票1了
如果需要第一个id(降序模式)
所以如果你有同一组的票1,2,3,你就只有票3了