从基于不同列的表中进行选择

时间:2013-12-16 19:12:39

标签: sql sql-server sql-server-2005

希望这是有道理的。我有一个表中有一堆记录。每条记录都有一个uniqueID和一个名为pro的localID。 UniqueID永远不会重复,但可以有多个具有相同localID的记录。我正在尝试构建一个查询,即使可能有15条具有相同localID的记录,也只显示其中的一条。任何人,没关系。我怎么把它关掉?我试过了:

SELECT DISTINCT id, pro FROM ProLookup WHERE pro LIKE '%" & replace(q,"'","''") & "%'"

但这不起作用。 “q”是搜索pro(localID)的最终用户的查询。我不是sql的专家,所以我确定我做错了什么。非常感谢任何和所有的帮助!

3 个答案:

答案 0 :(得分:2)

如果您可以获得最大的ID,那么这将有效。

SELECT 
    MAX(id) AS id, 
    pro 
FROM ProLookup 
WHERE pro LIKE '%" & replace(q,"'","''") & "%'"
GROUP BY pro

答案 1 :(得分:1)

也许SELECT TOP 1 id, pro FROM ProLookup WHERE pro LIKE '%" & replace(q,"'","''") & "%'"

您的查询有什么问题?即提供错误或不正确的数据。

是额外的"到底有必要吗? SQL Server并不特别喜欢双引号,因此如果将其传递给查询,则可能需要根据您的环境将其删除。

答案 2 :(得分:0)

SELECT id, pro  
FROM
(
SELECT id, pro , ROW_NUMBER() OVER (PARTITION BY pro ORDER BY id) AS RN
FROM ProLookup 
WHERE pro LIKE YourCondition    --<-- Only if you want certain Pro ids, if you
)Q                                 -- want all Distinct Pro Ids, take where clause
WHERE RN = 1                       -- Out.