我过去曾问过类似的问题,但没有完全得到我需要的东西,这是老问题
如何获取 SQL 中具有 MAX 和 MIN 值的行的 ID
我需要做的是获取一组数据,它对item
数据库中具有相同字段的所有项目进行了分组,但确保数据集输出与特定项目 ID 相关的详细信息,以便以特定方式对分组进行排序。(在我的情况下,我需要按任一totalStock
字段订购,或者price
,如果totalStock
然后订购,desc
则price
订购asc
。
我认为这个 SO 问题更好地回答了我的问题,但我不明白Joins
我害怕
这是我所在位置的示例:
"SELECT * FROM (select *, count(id) as Variants, sum(totalStock) as sumTotalStock
FROM `products` WHERE id > 0 AND `display`='1'
GROUP BY item ORDER BY CASE WHEN totalStock > 0 THEN totalStock ELSE price END DESC)
AS unknownVar
ORDER BY sumTotalStock"
我对 SQL 失去理解的目的是从我的数据库中获取一组内部结果,这些结果按if或item
else 排序。然后这个内部结果集按 排序。totalStock
totalStock > 0
price
sumTotalStock
重要的是
ORDER BY CASE WHEN totalStock > 0 THEN totalStock ELSE price END
这给了我两个问题。
1)一些奇怪的输出,遗漏了一些应该显示的内容。
2)另外,我需要能够更改排序顺序
ORDER BY CASE WHEN totalStock > 0 *DESC* THEN totalStock ELSE price *ASC* END
使用 astrix'dDESC
并且ASC
不起作用,我似乎必须放在语句DESC
的末尾ORDER BY
,但是在任何一种情况下它都是排序DESC
的,这是错误的。
鉴于上述两个问题,我不确定这是否真的有效!
我现在花了大部分下午和整个晚上的时间在谷歌和各种 SO 问题上,但恐怕我已经放弃了,不得不发布另一个!
如果有人可以向我发布一些可以对此进行排序的代码,我将永远感激不尽!
我正在使用 MySQL 数据库,在所有情况下,totalStock
和price
列都是数字,并且item
是一个varChar
字段。一旦我可以使用这些字段,我就可以提取我需要的所有其他内容,所以希望你不需要更多的东西来为我指明正确的方向?