SELECT
SUM(prices.Price)
FROM (
SELECT
prices.Price
, CASE
WHEN @id != prices.id
THEN 1
ELSE 0
END AS isMinGroupValue
, (@id := prices.id)
FROM
prices
CROSS JOIN (
SELECT
@id := 0
) AS init_user_params
ORDER BY
prices.ID ASC
, prices.price ASC
) AS prices
WHERE
prices.isMinGroupValue = 1
SELECT
SUM(prices1.Price)
FROM
prices prices1
LEFT JOIN
prices prices2
ON
prices1.ID = prices2.ID
AND
prices1.price > prices2.price
WHERE
prices2.ID IS NULL
6条答案
按热度按时间wvt8vs2t1#
另一种使用分区而不使用
group by
陈述jecbmhm32#
我会用相关性
subquery
:wvyml7n53#
您可以执行如下查询
0md85ypi4#
其他一些方法是使用mysql用户变量或自左连接。。
mysql用户变量解决方案
查询
请参见演示https://www.db-fiddle.com/f/nzwqmqaxd7mvq589r7wuz8/0
自左连接解决方案
查询
请参见演示https://www.db-fiddle.com/f/nzwqmqaxd7mvq589r7wuz8/1
vdgimpew5#
可以使用子查询选择
min
每个身份证的价格是多少sum
这些价值观:j13ufse26#
您可以创建一个子查询来查找每个id的最低价格,并从中获取结果并将它们相加。在伪代码中: