gpt4 book ai didi

SQL SELECT DISTINCT 和 GROUP BY 问题

转载 作者:行者123 更新时间:2023-11-29 02:36:28 25 4
gpt4 key购买 nike

我只需要为每个特定的数据库条目返回 1 行。例如如果我有:

ID col1 col2
1 1 A
2 1 B
3 1 C
4 2 D
5 3 E
6 4 F
7 4 G

在 MySQL 中我可以运行一个查询

SELECT DISTINCT col1, col2 FROM table GROUP BY col1

我会得到->

ID col1 col2
1 1 A
4 2 D
5 3 E
6 4 F

这正是我想要的,但是如果我在 SQL Server 中运行相同的查询,我会得到一个错误......

所以,基本上我只需要从表中的每一行返回一个(或第一个)“col1”及其“col2”..

SQL Server 的正确语法是什么?

感谢您的宝贵时间!

安德鲁

编辑:

在 mysql 中有效的完整查询是 ->

SELECT DISTINCT list_order, category_name, category_id
FROM `jos_vm_category`
WHERE `category_publish` = 'Y'
GROUP BY list_order

因此,对于每个“list_order”编号,我想从该行返回 category_name 和 category_id,并忽略具有相同“list_order”编号的所有其他行

最佳答案

另一种方法是在 T-SQL 中使用 ROW_NUMBER() 函数,它允许您按某些东西“分区”您的数据 - 就像这里的 col1 - 和获取每个数据分区的增量数字。如果您只想要每个“分区”的第一个条目,只需以这种方式查询(使用公用表表达式 - CTE):

;WITH Distincts AS
(
SELECT ID, col1, col2,
ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY ID) AS 'RowNo'
FROM dbo.Table
)
SELECT
ID, col1, col2
FROM
Distincts
WHERE
RowNo = 1

这为我提供了您正在寻找的输出。

关于SQL SELECT DISTINCT 和 GROUP BY 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4360317/

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