【发布时间】:2010-12-05 18:07:20
【问题描述】:
我只需要为每个特定的数据库条目返回 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”编号的所有其他行
【问题讨论】:
-
@marc_s:我猜 OP 得到的错误是 SQL Server 要求所有
SELECT字段出现在GROUP BY子句中,除非它们是聚合函数的一部分。 MySQL 不需要这个。 -
在 MSSQL 中,错误是“列 'jos_vm_category.category_id' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。”
标签: sql mysql sql-server