gpt4 book ai didi

mysql - 帮助 MySQL 查询...需要帮助排序一组行

转载 作者:行者123 更新时间:2023-11-30 23:41:21 25 4
gpt4 key购买 nike

我可以通过解释我的查询和我需要什么来最好地说明它。

我需要能够从数据库中获取一组项目,按类别、制造商和制造年份分组。需要根据组内项目的总数对分组进行排序。这部分通过下面的查询完成。

其次,我需要能够显示组中最昂贵商品的图像,这就是我使用 MAX(items.current_price) 的原因。我认为 MAX() 获取与最大列值对应的整行。我错了,因为 MAX 只获取最大价格的数值。所以查询不适合那个。

SELECT
items.id,
items.year,
items.manufacturer,
COUNT(items.id) AS total,
MAX(items.current_price) AS price,
items.gallery_url,
FROM
ebay AS items
WHERE
items.primary_category_id = 213
AND
items.year <> ''
AND
items.manufacturer <> ''
AND
items.bad_item <> 1
GROUP BY
items.primary_category_id,
items.manufacturer,
items.year
ORDER BY
total DESC,
price ASC
LIMIT
10

如果这样解释不好,结果应该是这样的

id 10548
1989
制造商鲍曼
总计 451
price 8500.00(表中最贵商品的价格/不是商品 10548 的价格)
gallery_url http://ebay.xxxxx (商品10548的图片)

请帮忙。谢谢

最佳答案

我遇到过同样的问题,我相当确定您必须执行两个查询(或子查询,这是个人喜好问题)。

第一个查询就像您所拥有的(除了 id 没有帮助您)。第二个查询使用 GROUP BY 字段和一个(一个!)MAX 字段来获取 ID 和您需要的任何其他元数据。

相信这就是实现,尽管它很难测试:

SELECT
items.id,
items.year,
items.manufacturer,
items.gallery_url
FROM
ebay as items
NATURAL JOIN
(
SELECT
COUNT(items.id) AS total,
MAX(items.current_price) AS current_price,
items.primary_category_id,
items.manufacturer,
items.year
FROM
ebay AS items
WHERE
items.primary_category_id = 213
AND
items.year <> ''
AND
items.manufacturer <> ''
AND
items.bad_item <> 1
GROUP BY
items.primary_category_id,
items.manufacturer,
items.year
ORDER BY
total DESC,
price ASC
LIMIT
10
) as bigones
ORDER BY
bigones.total DESC,
bigones.current_price ASC

此文档可以帮助您了解正在发生的事情:

http://dev.mysql.com/doc/refman/5.1/en/group-by-hidden-columns.html

... all rows in each group should have the same values for the columns that are ommitted from the GROUP BY part. The server is free to return any value from the group, so the results are indeterminate unless all values are the same.

关于mysql - 帮助 MySQL 查询...需要帮助排序一组行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2759258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com