Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为什么“受影响的行数”在普通选择和选择到之间有所不同?_Sql_Sql Server_Tsql_Ssms - Fatal编程技术网

Sql 为什么“受影响的行数”在普通选择和选择到之间有所不同?

Sql 为什么“受影响的行数”在普通选择和选择到之间有所不同?,sql,sql-server,tsql,ssms,Sql,Sql Server,Tsql,Ssms,我有一个查询,如下所示: SELECT OBJECT_SCHEMA_NAME(T.[object_id],DB_ID()) AS [Schema] ,T.[name] AS [Table], AC.[name] AS [Column] ,TY.[name] AS [Data Type] ,sep.[value] AS [Description] ,AC.[max_length] AS [Maximum Field Length] ,create

我有一个查询,如下所示:

SELECT  
    OBJECT_SCHEMA_NAME(T.[object_id],DB_ID()) AS [Schema]
    ,T.[name] AS [Table], AC.[name] AS [Column]
    ,TY.[name] AS [Data Type]
    ,sep.[value] AS [Description]
    ,AC.[max_length] AS [Maximum Field Length]
    ,create_date AS [Date Created]
    ,modify_date AS [Date Modified]
    ,CASE WHEN is_identity = 1 THEN 'Yes' ELSE 'No' END AS [Primary Key]
    ,CASE WHEN AC.[is_nullable] = 1 THEN 'Yes' ELSE 'No' END AS [Allows Nulls]  
--  INTO 
--  tmp_desc
FROM sys.[tables] AS T   
    INNER JOIN sys.[all_columns] AC ON T.[object_id] = AC.[object_id]  
    INNER JOIN sys.[types] TY ON AC.[system_type_id] = TY.[system_type_id] AND AC.[user_type_id] = TY.[user_type_id]   
    left join sys.extended_properties sep on t.object_id = sep.major_id
                                         and ac.column_id = sep.minor_id
                                         and sep.name = 'MS_Description'
WHERE
    T.[is_ms_shipped] = 0
…列出我的表和字段中的某些属性

当我执行以下步骤时,会发生一些奇怪的事情:

我运行SELECT,没有创建临时表,但我运行了一个drop表,以防返回1018条记录 我在上面的代码中运行SELECT取消对它的注释:1028条记录受影响 我再次注释出INTO,不要删除temp表,只选择:返回1028条记录 我运行“select*from tmp_desc”:返回1028条记录 我删除临时表并再次运行SELECT ONLY:返回1018条记录 创建临时表的任何想法都会影响查询返回的行,如果tmp_desc不是来自查询的一部分?

存储在tmp_desc中的数据包括其自身的详细信息;显然,如果只运行SELECT而不运行INTO,则不会。因此,在运行纯SELECT之后,您可以为INTO多获得10行,因为tmp_desc表中有10列

如果希望查询相同,请使用INTO从查询中排除tmp_desc:

选择S.[name]作为[Schema], T.[name]作为[表], AC.[名称]作为[列], TY.[name]作为[数据类型], sep[值]作为[说明], AC.[max_length]作为[Maximum Field length], 将_日期创建为[创建日期], 将_日期修改为[修改日期], 当is_identity=1时,则“是”或“否”结束为[主键], 当AC.[is_nullable]=1时,则“是”或“否”结束为[允许为空] 进入tmp_desc 从sys.S 内部联接系统。[tables]T在S.schema\u id=T.schema\u id上 内部联接系统[T.[object\u id]=AC.[object\u id]上的[all\u columns]AC AC上的内部联接系统。[types]TY。[system\U type\U id]=TY。[system\U type\U id] 和AC.[user\u type\u id]=TY.[user\u type\u id] 左连接sys.extended\u properties sep ON T.object\u id=sep.major\u id 和AC.column\u id=sep.minor\u id 而sep.name='MS_Description' 其中T.[is\u ms\u shipped]=0 和NOTS.[name]=N'dbo'和T.[name]=tmp_desc';