下面的数据只是我原始数据的摘要,由四个表的“连接”形成。要求是;
data :
symbol target analyst
a 1690 peas
a 1230 tomato
a 1235 papaya
a 1230 papaya
a 1690 apple
b 1450 bean
b 1914 potato
b 1540 tomato
b 1797 papaya
b 1880 apple
b 2000 turnips
c 1550 bean
c 1588 onion
c 1588 onion
c 1588 potato
c 1463 soya
c 1130 tomato
required : symbol target analyst a 1690 peas a 1690 apple b 2000 turnips c 1588 onion c 1588 potato
即对于表中的每个交易品种,必须显示每个唯一分析师的 max(target) 行。 尝试使用 'max(target)' 和 'group by symbol' 的组合,它仅显示一个最大目标行。 用于形成数据的代码的一部分是;
SELECT
a.symbol, c.target, c.analyst
FROM table1 a
LEFT JOIN table2 b
ON a.symbol = b.symbol
LEFT JOIN table3 c
ON a.symbol LIKE CONCAT('%', c.symbol , '%')
LEFT JOIN table4 d
ON a.symbol = d.symbol;
最佳答案
要获得所需的输出,您可以进行自连接
select distinct a.*
from demo a
left join demo b on a.symbol = b.symbol
and a.target < b.target
where b.symbol is null
关于Mysql:按符号分组但保留所有顶部目标值行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47526229/