显示表中不包含主键的所有列

时间:2016-11-13 17:21:15

标签: sql primary-key display

我有这个查询要做。 显示名为'以某种方式'的表中的所有列。这不是主键。

这就是我尝试获取与主键ID列不同的列标题的方法:

SELECT cols.column_name 
FROM information_schema.table_constraints t 
JOIN information_schema.key_column_usage k 
USING(constraint_name,table_schema,table_name)
WHERE t.constraint_type <> 'PRIMARY KEY' 
AND t.table_schema='mydb' 
AND t.table_name='somehow' 

因为我收到SQL错误,所以有些不对劲。我做错了什么?

更新:

SELECT k.column_name 
FROM information_schema.table_constraints t 
JOIN information_schema.key_column_usage k
USING(constraint_name,table_schema,table_name)
WHERE t.constraint_type <> 'PRIMARY' 
AND t.table_schema='mydb' 
AND t.table_name='somehow'

这显示了我不想得到的结果(主键)我需要显示其他所有内容:(

1 个答案:

答案 0 :(得分:0)

所有表格列都可以在MySQL的系统表columns中找到。其column_key字段包含&#39; PRI&#39;如果列是主键的一部分。因此:

select column_name
from information_schema.columns
where table_schema = 'mydb' 
   and table_name = 'somehow'
   and column_key <> 'PRI';