gpt4 book ai didi

MySQL显示整个组,组内按字母顺序排序

转载 作者:行者123 更新时间:2023-11-30 01:24:46 25 4
gpt4 key购买 nike

我有以下查询:

SELECT * 

FROM vendors_parts INNER JOIN

vendors ON vendors_parts.vendor = vendors.vendor_id

WHERE (vendors_parts.vendor = @vendor_id) AND (vendors_parts.active = @active) OR

(vendors_parts.vendor = @vendor_id) AND (vendors_parts.active = @inactive)

ORDER BY vendors_parts.old_id, vendors_parts.vendor_part, date_start DESC, vendors_parts.active DESC

它返回以下格式的数据:

vendor_part      active       old_id
b 1 1
a 0 1
a 0 1
b 0 1
x 1 3
z 1 5
c 1 20
c 0 20

我的问题是如何在对vendor_part升序和active降序进行排序时将old_id保持在一起?我想要的输出是:

vendor_part      active       old_id
b 1 1
a 0 1
a 0 1
b 0 1
c 1 20
c 0 20
x 1 3
z 1 5

我还尝试过根据 old_id 进行分组的子查询,但这限制了我只能使用一个唯一的 old_id:

SELECT *

FROM
(
SELECT * FROM vendors_parts INNER JOIN vendors ON vendors_parts.vendor = vendors.vendor_id
WHERE (vendors_parts.vendor = @vendor_id) AND (vendors_parts.active = @active) OR (vendors_parts.vendor = @vendor_id) AND (vendors_parts.active = @inactive)
GROUP BY vendors_parts.old_id
) temp_table
ORDER BY vendor_part

如何显示分组在一起的所有 old_id,并按各自组中的供应商_部分按字母顺序排序?

谢谢

最佳答案

这是一个可能的答案。请注意,在此答案中,表 tbl 是您实际(相当复杂)查询的占位符(我不喜欢使用它,但您可能必须使用临时表来保持查询语法易​​于管理):

SELECT tbl.* FROM tbl 
JOIN (SELECT MIN(vendor_part) as mvp, old_id FROM tbl GROUP BY old_id) as driver
USING (old_id)
ORDER BY driver.mvp, tbl.old_id, active DESC, tbl.vendor_part

参见http://sqlfiddle.com/#!2/c53a9/4现场演示。正如您将看到的,使用您在问题中给出的示例,它会产生预期的结果。

关于MySQL显示整个组,组内按字母顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18133132/

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