Ad

MySQL Stored Procedure How To Generate A New Auto_increment?

- 1 answer

I have a procedures like this on 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

When I execute it show a table

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

Was wondering is there anything to make this table generate a new auto_increment id field in front of it?

This is what i want it to look like when execute

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

Answer

If your MySQL version support ROW_NUMBER + window function you can try this.

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
Ad
source: stackoverflow.com
Ad