gpt4 book ai didi

MySQL - GROUP BY,分组时仅选择第一行

转载 作者:行者123 更新时间:2023-11-29 09:53:08 25 4
gpt4 key购买 nike

我在将特定列分组为一列时遇到问题。当我使用 GROUP BY 时,最后一行总是在它应该是第一行时被选中。

主要查询是:

SELECT cpme_id, 
medicine_main_tbl.med_id,
Concat(med_name, ' (', med_dosage, ') ', med_type) AS Medicine,
med_purpose,
med_quantity,
med_expiredate
FROM medicine_main_tbl
JOIN medicine_inventory_tbl
ON medicine_main_tbl.med_id = medicine_inventory_tbl.med_id
WHERE Coalesce(med_quantity, 0) != 0
AND Abs(Datediff(med_expiredate, Now()))
ORDER BY med_expiredate;

SELECT without GROUP BY

如果我使用任何重复的列值GROUP BY(在本例中,我使用了 med_id):

SELECT with GROUP BY

我正在尝试获取此输出

Expected Output

输出应该只是第一个查询的前两个。显然,我不能使用 LIMIT。

最佳答案

由于您使用的是 MariaDB,我建议在此处使用 ROW_NUMBER:

WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY med_id ORDER BY med_expireDate) rn
FROM yourTable
)

SELECT cpme_id, med_id, Medicine, med_purpose, med_quantity, med_expireDate
FROM cte
WHERE rn = 1;

这假设给定药物的“第一”行是具有最早过期日期的药物。这是对数据的唯一与预期输出一致的解释。

关于MySQL - GROUP BY,分组时仅选择第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54433801/

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