Sql server 如何为具有相同值的结果添加自定义递增计数器?
我有以下MySQL查询,用于从特定位置重命名文件:Sql server 如何为具有相同值的结果添加自定义递增计数器?,sql-server,counter,increment,Sql Server,Counter,Increment,我有以下MySQL查询,用于从特定位置重命名文件: SELECT REPLACE('copy "S:' + RIGHT(Path, LEN(Path) - 10) + '.eps" ','/','\'),' "C:\EPS\' + barcode + ' ().eps"' FROM product WHERE barcode IN ('1234','6789); 这给了我以下结果,这很好: copy "S:\C\image1.eps"
SELECT REPLACE('copy "S:' + RIGHT(Path, LEN(Path) - 10) + '.eps" ','/','\'),' "C:\EPS\' + barcode + ' ().eps"'
FROM product
WHERE barcode IN ('1234','6789);
这给了我以下结果,这很好:
copy "S:\C\image1.eps" | "C:\EPS\1234 ().eps"
copy "S:\C\image2.eps" | "C:\EPS\1234 ().eps"
copy "S:\C\image3.eps" | "C:\EPS\1234 ().eps"
copy "S:\C\image4.eps" | "C:\EPS\1234 ().eps"
copy "S:\C\image5.eps" | "C:\EPS\6789 ().eps"
copy "S:\C\image6.eps" | "C:\EPS\6789 ().eps"
如何为每个匹配值添加自定义计数器以获得以下结果
copy "S:\C\image1.eps" | "C:\EPS\1234 (1).eps"
copy "S:\C\image2.eps" | "C:\EPS\1234 (2).eps"
copy "S:\C\image3.eps" | "C:\EPS\1234 (3).eps"
copy "S:\C\image4.eps" | "C:\EPS\1234 (4).eps"
copy "S:\C\image5.eps" | "C:\EPS\6789 (1).eps"
copy "S:\C\image6.eps" | "C:\EPS\6789 (2).eps"
您拥有的代码看起来像SQL Server,因此请使用
ROW\u NUMBER()
window函数:
SELECT REPLACE('copy "S:' + RIGHT(Path, LEN(Path) - 10) + '.eps" ','/','\'),
'"C:\EPS\' + barcode + ' (' +
CAST(ROW_NUMBER() OVER (PARTITION BY barcode ORDER BY Path) AS VARCHAR(10))
+').eps"'
FROM product
WHERE barcode IN ('1234','6789');
请参阅。结果:
您确定标记了正确的数据库吗?这段代码看起来不像MySql。MySql无法添加字符串,因此这不是MySql,或者如果是MySql,它就被破坏了。我保证查询运行良好,并且是MySql。我只需要知道如何添加一个计数器,使每个值都有一个唯一的值,并且必须是数字顺序。这绝对不是MySQL。MySQL需要
CONCAT(…)
,因为MySQL中的'x'+'.eps'
是0
,因为它在做数学运算。这可能是Microsoft SQL Server,它是一种完全不同的方言。非常感谢,它工作得非常好。对于MySQL和SQL Server的混淆,我深表歉意。@您可以通过编辑问题上的标记来消除混淆。
copy "S:\C\image1.eps" | "C:\EPS\1234 (1).eps"
copy "S:\C\image2.eps" | "C:\EPS\1234 (2).eps"
copy "S:\C\image3.eps" | "C:\EPS\1234 (3).eps"
copy "S:\C\image4.eps" | "C:\EPS\1234 (4).eps"
copy "S:\C\image5.eps" | "C:\EPS\6789 (1).eps"
copy "S:\C\image6.eps" | "C:\EPS\6789 (2).eps"