Мне нужно вернуть только 1 строку на конкретную запись в базе данных. Напр. если у меня есть:SQL SELECT DISTINCT и GROUP BY problem
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?
Благодарим вас за внимание!
Андрей
EDIT:
полный запрос, который работает в 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