SQL Server 查询以列出表中除主键和备用键之外的所有列

标签 sql sql-server tsql

有人可以指出我如何编写查询以从不是主键或备用键的表中提取所有列名的方向。我特别想从我的查询中排除备用键。

最佳答案

DECLARE @tableName nvarchar(max) = 'table_name'

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = @tableName

EXCEPT

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS [tc]
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE [ku] ON tc.CONSTRAINT_NAME = ku.CONSTRAINT_NAME
    AND ku.table_name = @tableName

关于SQL Server 查询以列出表中除主键和备用键之外的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6602481/

相关文章:

sql - SQL 过滤器中的 CASE 与 OR

Mysql - uuid 列上是否需要唯一索引?

sql-server - 在 SQL Server 上的事务内部删除和创建表,对其他进程的影响

sql - 如何调试 "Conversion failed when converting the varchar value X to data type int"?

SQL over 子句 - 将分区划分为编号的子分区

sql - 替换字符串中的字符而不影响名称

mysql - 使用 3 个表选择查询

sql - MySQL 查询 : work out the average rating for each user then order the results by average rating and number of ratings

sql-server - 查找 SQL Server 数据库是否存在有效的完整备份

sql - 何时使用公共(public)表表达式 (CTE)