分組取第一筆可以用MAX / MIN + GROUP BY達成
但是取各組的第二筆要如何做呢?
我有在網路上查到這篇
https://notes.andywu.tw/2021/mysql-mariadb-%E5%8F%96%E5%BE%97%E6%AF%8F%E5%80%8Bgroup%E7%9A%84%E5%89%8Dn%E7%AD%86%E8%B3%87%E6%96%99/
但是實際測試發生問題
https://dbfiddle.uk/3eMFcW0D
第一次執行時,計數不會累加,要再執行一次才會累加
原因應該是我的mysql版本用的是5.7的關係,我改用8.0測試就沒有問題了
但是實際網站用的是5.7
請問有設定可以調整達成相同效果嗎?
CREATE TABLE `payment`
(`id` INT, `uid` INT, `currency` VARCHAR(3), `amount` INT);
DESCRIBE `payment`;
INSERT INTO `payment` (`id`,`uid`,`currency`,`amount`) VALUES
(1, 11, 'NTD', 800),
(2, 6, 'NTD', 590),
(3, 7, 'NTD', 1020),
(4, 55, 'USD', 24),
(5, 33, 'USD', 27),
(6, 2, 'USD', 25),
(7, 13, 'JPY', 3870),
(8, 10, 'JPY', 2980),
(9, 41, 'JPY', 3780);
select CC.id,CC.uid,CC.currency,CC.amount
from (
select AA.id,AA.uid,AA.amount,
@rowno := if(@grp = `currency`, @rowno + 1, 1) as idx,
@grp := `currency` as currency
from (select * from payment order by `currency`, amount DESC) AA
cross join (select @rowno := 0, @grp := null) BB) CC
where CC.idx = 2