2012-02-05 161 views
4

我在查询System.Data.SqlClient.SqlException: Incorrect syntax near the keyword 'Distinct'中收到以下错误。我照着我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'适用于所有选定的字段而不适用于单个字段。 – 2012-02-05 15:14:53

回答

9

DISTINCT必须是第一位的,但它会得到你所有不同对ItemIdSize。那是你想要的还是你在寻找别的东西?

+0

感谢您的帮助我想要输出像用户选择'8x12'然后获得'1,5,9' – 2012-02-05 15:18:23

+0

@Hira:如果您有用户选择,你不能只是查询'DISTINCT ItemId WHERE大小= @ UserSelectedSize'? – 2012-02-05 15:20:30

+0

感谢我把你的想法真的很感谢为help.Thanks它会为我工作。 – 2012-02-05 15:26:06

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' – 2012-02-05 15:22:54

+0

我只是把它作为单列结果集并在您的应用程序中做任何必需的连接。如果必须在SQL做到这一点,你可以用'XML PATH' – 2012-02-05 15:25:40

+0

感谢马丁的帮助。 – 2012-02-05 15:26:53

1

使用

select distinct ItemId, ... 
2

与SELECT关键字一起使用的SQL DISTINCT命令仅根据您在其后指定的列列表检索唯一数据条目。所以你必须使用DISTINCT命令就像在你的SELECT查询

下面的“SELECT DISTINCT项目Id,尺寸从ItemTilesSizes”

这将在这两个项目ID和大小的组合选择从表中唯一的记录。

相关问题