如何解决如何为具有相同值的结果添加自定义递增计数器?
我有以下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" | "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_NUMBER()
窗口函数:
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');
请参见demo。
结果:
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"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。