2012-02-05 3 views
4

Я получаю следующую ошибку в запросе System.Data.SqlClient.SqlException: Incorrect syntax near the keyword 'Distinct'. Я искал Google, но не нашли никакой полезной решение по моему query.My запроса этоНеверный синтаксис рядом с ключевым словом 'Distinct'

SqlCommand myCommand = new SqlCommand("select ItemId,Distinct Size from ItemTilesSizes ", 
                myConnection); 

Мое имя таблицы ItemTilesSizes и имеет две колонки

ItemId Size 

1 8x13  
1 8x12  
5 8x10  
5 8x12  
5 8x13  
8 10x10  
8 4x4  
9 8x12  
14 8x13  
15 8x10  
15 24x24`  
+1

'DISTINCT' применяется ко всем выбранным полям не к отдельному полю. –

ответ

9

DISTINCT должен прийти первым, но он будет получать вам все различные пары ItemId и Size. Это то, что вы хотите, или вы искали что-то еще?

+0

Спасибо за помощь, я хочу иметь выход, например, когда пользователь выбирает'8x12', а затем получает '1,5,9' –

+0

@Hira: Если у вас есть выбор пользователя, не могли бы вы просто запросить' DISTINCT ItemId WHERE Size = @ UserSelectedSize'? –

+0

спасибо, что я получил вашу идею, спасибо за помощь. Спасибо, это сработает для меня. –

3

Distinct должен идти сразу же после того, как SELECT

SELECT DISTINCT ItemId, 
       Size 
FROM ItemTilesSizes 

Если вы хотите, чтобы оно применялось только к Size вам нужно GROUP BY и агрегат, чтобы определить, какие из возможного соответствия ItemId значения должно быть возвращено (в приведенном ниже пример возвращает наибольший)

SELECT MAX(ItemId) AS ItemId, 
     Size 
FROM ItemTilesSizes 
GROUP BY Size 

Хотя из разъяснений в комментариях я бы просто принести, что в качестве единых результирующих колонок и выполните любую необходимую конкатенацию в своем приложении. Если вы должны сделать это в SQL вы можете использовать XML PATH

SELECT STUFF((SELECT ',' + LEFT(ItemId, 10) 
       FROM ItemTilesSizes 
       WHERE Size = '8x12' 
       FOR XML PATH('')), 1, 1, '') 
+0

Спасибо за помощь. Я хочу иметь выход, например, когда пользователь выбирает '8x12', а затем получает' 1,5,9' –

+0

. Я просто вернул бы это в качестве единственного набора результатов для столбцов и выполнил бы любую необходимую конкатенацию в вашем приложении. Если вы должны сделать это в SQL, вы можете использовать 'XML PATH' –

+0

благодаря мартину за помощью. –

1

использование

select distinct ItemId, ... 
2

Команда SQL DISTINCT, используемая вместе с ключевым словом SELECT, извлекает только уникальные записи данных в зависимости от списка столбцов, который вы указали после него. так что вы должны использовать DISTINCT команду, как следующее в вашем запросе на выборку

«выберите DISTINCT ItemId, размер от ItemTilesSizes»

Это подберет уникальные записи из таблицы в комбинации обоих ItemID и размера.

Смежные вопросы