我需要每个特定数据库条目只返回1行。对于例如如果我有:SQL SELECT DISTINCT和GROUP BY问题
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不需要这个。 – 2010-12-05 18:18:35
MSSQL中的错误是“列'jos_vm_category.category_id'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。” – Andrej 2010-12-05 18:20:33