我的SQL查询是
select
concat(3*floor(email/3), '-', 3*floor(email/3) + 2) as `range`,
avg(`db_1`) as `avg_db1`,
avg(`db_2`) as `avg_db2`
[
...
...
...
]
from allocation
group by 1
我不想明确定义列的名称,因为它们的数量很大和/或可能是动态的。是否可以只使用SQL? (我用程序语言知道可能性。)
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'allocation' AND COLUMN_NAME <> "email"
ORDER BY ORDINAL_POSITION
是否可以使用上面的代码嵌套? (因为它生成列名称)。
答案 0 :(得分:0)
对于订单有效但不适用于群组...您必须明确重复代码
select
concat(3*floor(email/3), '-', 3*floor(email/3) + 2) as `range`,
avg(`db_1`) as `avg_db1`,
avg(`db_2`) as `avg_db2`
[
...
...
...
]
from allocation
group by concat(3*floor(email/3), '-', 3*floor(email/3) + 2)
但是从最新版本的mysql开始,您可以使用别名
select
concat(3*floor(email/3), '-', 3*floor(email/3) + 2) as `range`,
avg(`db_1`) as `avg_db1`,
avg(`db_2`) as `avg_db2`
[
...
...
...
]
from allocation
group by `range`
使用别名不适用于sqlserver ..或oracle ..