MySQL存储过程如何生成新的auto_increment?

MySQL stored procedure how to generate a new auto_increment?

我在 MySQL

上有这样的程序
SELECT t.name AS cat_name , f.id AS id_food 
FROM food AS f, categories AS t
WHERE f.quantity > 0 
AND t.id = f.id_cat 
ORDER BY t.name

当我执行它时显示 table

| cat_name | id_food |
| -------- | -------------|
| Seafood  | 1            |
| Seafood  | 3            |
| Seafood  | 5            |
| Beef     | 2            |
| Beef     | 16           |
| Special  | 7            |

想知道有没有什么可以让这个 table 在它前面生成一个新的 auto_increment id 字段

这就是我希望它在执行时的样子

| new_id  | cat_name | id_food |
|----     |------    | -----   |
| 1       | Seafood  | 1       |
| 2       | Seafood  | 3       |
| 3       | Seafood  | 5       |
| 4       | Beef     | 2       |
| 5       | Beef     | 16      |
| 6       | Special  | 7       |

如果你的 MySQL 版本支持 ROW_NUMBER + window 功能你可以试试这个。

SELECT ROW_NUMBER() OVER(ORDER BY t.name)new_id
       t.name AS cat_name ,
       f.id AS id_food 
FROM food AS f 
INNER JOIN categories AS t 
ON t.id = f.id_cat
WHERE f.quantity > 0 
ORDER BY t.name