【发布时间】:2015-05-05 15:38:45
【问题描述】:
SELECT *
FROM (
SELECT TOP 100
o.[Incident ID],
o.[Affected CI],
o.Title,
o.[Description],
d.[DB NAME],
ROW_NUMBER() OVER(PARTITION BY o.[Incident ID] ORDER BY o.[Incident ID]) rn
FROM Oracle_Incident_Data.dbo.Oracle_Incidents AS O
LEFT JOIN Oracle_Incident_Data.dbo.DB_NAMES_ORA$ AS D
ON CONCAT(COALESCE(o.[Affected CI],' '), COALESCE(o.[Title],' '), COALESCE(o.[Description],' ')) LIKE '%' + d.[DB NAME] + '%'
) a
WHERE rn = 1
一位朋友向我推荐了分区,以解决我在上一个查询返回曾经匹配时遇到的问题,在 DB 名称中找不到匹配项并转到下一个事件。现在的问题是我真的不明白它在做什么,我想调整匹配。接下来我想弄清楚如何让它加入最长的匹配字符串,但我需要先了解分区在这个查询中是如何工作的。提前谢谢你。
【问题讨论】:
-
你的语法建议除了mysql之外的其他数据库,可能是sql server
-
这是 sql server 抱歉,标签错误。
标签: sql sql-server partition