下面的数据只是我的原始数据的摘要,由四个表的“联接”组成。要求是;
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(目标)行。尝试使用‘max(目标)’和'group符号‘的组合,它只显示一个最大目标行。用于形成数据的代码的一部分是;
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;发布于 2017-11-28 07:42:29
要得到所需的输出,可以自行加入
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演示
发布于 2017-11-28 07:44:49
可以对获取每个符号的最大目标的select使用联接:
SELECT
a.symbol,
a.target,
a.analyst
FROM data a
LEFT JOIN (SELECT b.symbol,MAX(b.target) as `maxval` FROM data b GROUP BY b.symbol) b
ON b.symbol = a.symbol AND b.`maxval` = a.target
ORDER BY a.symbol,a.target,a.analysthttps://stackoverflow.com/questions/47526229
复制相似问题