gpt4 book ai didi

mysql - TSQL 选择不同的

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

我看过很多例子,但我无法弄明白。对于我疲惫的大脑来说可能太简单了。我有一个表,我需要选择所有列,其中一个是不同的。

ID  CAT PRODUCT
=======================
1 21 Product1
2 21 Product2
3 23 Product2
4 24 Product3
5 24 Product5
6 25 Product4
7 25 Product6

我要回去

ID  CAT PRODUCT
=======================
1 21 Product1
3 23 Product2
4 24 Product3
7 25 Product6

ID 和 PRODUCT 可能相同也可能不同。不需要条件。类别 (CAT) 需要不同。返回的值需要来自同一行。

在 Mysql 中我可以执行以下操作,但 MSSQL 不喜欢它。

SELECT * FROM table GROUP BY CAT

最佳答案

要获得按 id 排序的第一行,在 cat 上不同你可以使用这个

select id, cat, product from
(
Select *,
ROW_NUMBER() OVER (PARTITION BY cat ORDER BY ID) as num
from table

) t
where num = 1

这会为组中的每个元素创建一个数字,这些元素将由组创建(如下所示),然后选择第一个。


这样就可以了,我无法想象你为什么会想要这个结果。

select max(id) , cat, max(product)
from table
group by cat

select min(id) , cat, min(product)
from table
group by cat

会起作用。

您需要使用一个聚合函数,该函数会在分组依据找到的一组值中选择要使用的项目。

例如,当您按猫分组时,您有两行需要“合并”。

1   21  Product1
2 21 Product2

对于 id 列和 product 列,您必须选择要使用的两个值之一,如果您使用聚合函数 max(),您将选择这些值的最大值。以同样的方式 min() 会给你这些值的最小值。

关于mysql - TSQL 选择不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16711726/

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