我不完全确定为什么这不起作用。我确定它是非常基本的SQL,我在某处遗漏了某些东西。
SELECT COUNT(*)
FROM (SELECT MIN(sys.tables.name)
FROM sys.tables)
我收到此错误消息::
Msg 102, Level 15, State 1, Line 4 Incorrect syntax near ')'.
正确的输出应该只是一个数字,即当前数据库中第一个表中的行数。
答案 0 :(得分:2)
要使您的查询正常工作,只需在最后)
之后添加别名,并为列添加别名:
SELECT COUNT(*)
FROM (SELECT MIN(sys.tables.name) as name FROM sys.tables) as A
但是这个不会给你number of rows in the first table in the current database
。它将返回1,因为此子查询中有一条记录。要获取当前数据库中第一个表中的行数,必须使用动态SQL,如:
declare @Table_Name nvarchar(128), @stmt nvarchar(max)
select @Table_Name = min(name) from sys.tables
select @stmt = 'select ''' + @Table_Name + ''' as Table_Name, count(*) from ' + @Table_Name
exec sp_executesql @stmt = @stmt
答案 1 :(得分:0)
要获取当前数据库中第一个表中的行数,可以将查询编写为:
SELECT SUM(pa.rows) RowCnt
FROM sys.tables ta
INNER JOIN sys.partitions pa
ON pa.OBJECT_ID = ta.OBJECT_ID
WHERE ta.name =(SELECT MIN(T.name) FROM sys.tables T)
GROUP BY ta.name