关键字'Distinct'附近的语法不正确

时间:2012-02-05 15:11:51

标签: c# sql-server sql-server-2005

我的查询System.Data.SqlClient.SqlException: Incorrect syntax near the keyword '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`     

4 个答案:

答案 0 :(得分:11)

DISTINCT必须先行,但它会为您提供所有不同的ItemIdSize对。这是你想要的还是你在找别的东西?

答案 1 :(得分:4)

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, '') 

答案 2 :(得分:3)

与SELECT关键字一起使用的SQL DISTINCT命令仅检索唯一数据条目,具体取决于您在其后指定的列列表。所以你必须在你的选择查询中使用DISTINCT命令,如下所示

“选择DISTINCT ItemId,来自ItemTilesSizes的大小”

这将从表中选择ItemID和Size的组合中的唯一记录。

答案 3 :(得分:2)

使用

select distinct ItemId, ...