MySQL子行编号(仅限MySQL,不含PHP ...)
EX:调用的行号
表格所有调用的所有行
*----------*--------*-------*------*--------*
* bill_num * item * price * qte * sl_num *
*----------*--------*-------*------*--------*
* 10 * js1eee * 12.10 * 3 * *
* 10 * ft78eg * 15.10 * 7 * *
* 10 * ite489 * 10.10 * 5 * *
* 10 * ite78b * 24.10 * 6 * *
* 11 * it785b * 39.10 * 7 * *
* 11 * it7889 * 78.10 * 9 * *
* 11 * it7899 * 41.10 * 7 * *
* 12 * ite489 * 41.10 * 8 * *
* 12 * ite78b * 33.10 * 7 * *
查询后
*----------*--------*-------*------*--------*
* bill_num * item * price * qte * sl_num *
*----------*--------*-------*------*--------*
* 10 * js1eee * 12.10 * 3 * 1 *
* 10 * ft78eg * 15.10 * 7 * 2 *
* 10 * ite489 * 10.10 * 5 * 3 *
* 10 * ite78b * 24.10 * 6 * 4 *
* 11 * it785b * 39.10 * 7 * 1 *
* 11 * it7889 * 78.10 * 9 * 2 *
* 11 * it7899 * 41.10 * 7 * 3 *
* 12 * ite489 * 41.10 * 8 * 1 *
我还没有在互联网上找到解决方案 我开发了这个技巧
UPDATE bill AS a
LEFT JOIN
(
SELECT bill_num FROM bill
GROUP BY bill_num
) AS b ON b.bill_num=a.bill_num
SET sl_num = @ordre := IF(a.bill_num= @bill_num_mem, @ordre+1, ( @bill_num_mem:=b.bill_num) OR @ordre:=1)
WHERE b.bill_num=a.bill_num
在我的情况下它可以工作,但与其他MySQL版本,字符串而不是插入...?
我认为不那么复杂,更可靠感谢Barmar,它的工作是一条线路。围绕变量可能更简单的解决方案吗?
UPDATE bill AS a
LEFT JOIN
(
SELECT DISTINCT bill_num FROM bill ORDER BY bill_num
) AS b ON b.bill_num=a.bill_num
SET sl_num = @ordre := IF(a.bill_num= @bill_num_mem, @ordre+1, ( @bill_num_mem:=b.bill_num) OR @ordre:=1)
WHERE b.bill_num=a.bill_num