作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对一个查询进行了“分组”。这是对带有版本的技术部件的查询。
喜欢:
ID , GlobalID, Name , DateCreated
413, 17, Masterscrew , 17.10.2014
421, 17, Masterscrew , 28.10.2014
482, 29, Bluescrew , 11.08.2014
519, 17, Masterscrew B, 01.12.2014
目标是执行一个查询,其结果如下:
GlobalID, Version, ID, Date
17, 1, Masterscrew, 413, 17.10.2014
17, 2, Masterscrew, 421, 28.10.2014
17, 3, Masterscrew B, 519, 01.12.2014
29, 1, Bluescrew, 482, 11.08.2014
面临的挑战是“版本”列。我可以对 MySQL 施展任何咒语来施展魔法吗?
最佳答案
这可以通过其中包含 @ID
变量的复杂查询之一来完成。
SELECT (@ID := IF(@Prev <> GlobalID, 1, @ID + 1)) version,
(@Prev := GlobalID) GlobalID,
Name,
ID,
STR_TO_DATE(DateCreated, '%d.%m.%Y') DateCreated
FROM parts,
( SELECT @ID := 0, @Prev := 0 ) A
ORDER BY GlobalID, ID
就可以了。 http://sqlfiddle.com/#!2/82a36/15/0
每次出现具有相同 GlobalID
值的新行时,@ID
变量都会递增,并在发生更改时重置为零。 @Prev
变量跟踪前一行的 GlobalID
值。
该行初始化这两个变量。
( SELECT @ID := 0, @Prev := 0 ) Init
请勿更改 SELECT 中前两列的顺序,否则查询将不再有效。 (这是一次严峻的 MySQL 黑客攻击;其他 RDMS 提供排名)。
关于php - MySQL:在组内枚举(Banana、1/Banana、2/Banana、3/Apple、1 ...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28288945/
我是一名优秀的程序员,十分优秀!