Joh*_*0te 4 sql t-sql database sql-server sql-server-2008
给出以下select语句:
Select t.name, SUM(st.row_count) as row_count
From sys.dm_db_partition_stats st
join sys.tables t on t.object_id = st.object_id
join ClientUpdateConfig c on t.name = c.TableName
Where (index_id < 2) and schema_id = schema_id('dbo')
and t.type ='U'
group by t.name
Run Code Online (Sandbox Code Playgroud)
我还想选择c.RowID作为附加字段.查询按原样运行,但如果我像1那样更改为:
Select t.name, SUM(st.row_count) as row_count, c.RowID as current_row
Run Code Online (Sandbox Code Playgroud)
我收到错误:
消息8120,级别16,状态1,行1列"ClientUpdateConfig.RowID"在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.
有人可以解释为什么我需要聚合函数中的选择值(我假设是SUM)或者在group by中选择它吗?我不明白这个限制 - 如果我能理解为什么会这样,我可以调整我的查询设计.
因为它不知道选择哪个RowId.
你需要:
. . .
group by t.name, RowId
Run Code Online (Sandbox Code Playgroud)
要么:
select . . ., min(RowId) -- or max(RowId)
Run Code Online (Sandbox Code Playgroud)
即使您知道每个名称只有一个RowId,数据库也不知道,因此您必须明确说明您要在查询中执行的操作.
| 归档时间: |
|
| 查看次数: |
2698 次 |
| 最近记录: |