SELECT * FROM foo返回类似如下的内容
name | price | value
foo | 1 | 3
foo | 2 | 2我想要接收:
name | price | value | record
foo | 1 | 3 | row1
foo | 1 | 3 | row2
foo | 1 | 3 | row3
foo | 2 | 2 | row1
foo | 2 | 2 | row2我该怎么做呢?
发布于 2019-05-21 10:55:44
好的,我试着理解你想要的是什么,你只是想按价格和价值对你的行进行排序,对吗?如果是这样,只需使用order by子句,如下所示:
select * from foo order by price, value;好的,reEdit我的答案如下,如果你使用PostgreSQL,事情将会非常简单。
select * from foo;
name | price | value
------+-------+-------
foo | 1 | 3
foo | 2 | 2
(2 rows)
select
name,
price,
generate_series(1,value,1) as series_number
from
foo;
name | price | series_number
------+-------+---------------
foo | 1 | 1
foo | 1 | 2
foo | 1 | 3
foo | 2 | 1
foo | 2 | 2
(5 rows)
select name,price,value from (
select
name,
price,
value,
generate_series(1,value,1) as series_number
from
foo
) tmp order by price, value;
name | price | value
------+-------+-------
foo | 1 | 3
foo | 1 | 3
foo | 1 | 3
foo | 2 | 2
foo | 2 | 2
(5 rows)而mysql完成这一任务的方法似乎要复杂得多,请看这里:https://dba.stackexchange.com/questions/75785/how-to-generate-a-sequence-in-mysql
https://stackoverflow.com/questions/56230453
复制相似问题