2016-11-13 49 views
0

我已经完成了该查询。 显示名为'somehow'的表中所有不是主键的列。显示表中不包含主键的所有列

这是我正在试图获得来自主键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' 

这说明正是我我想知道我得到的结果是(主键),我需要一切要显示:(

+0

mySQL的,@RyanVincent – XanderNWA

+0

不幸的是,cols没有被定义为别名。我只是认为cols默认用于为表格选择多个列。说实话,我不知道该在哪里申报。我只是使用这些命令行来进行查询。 @RyanVincent – XanderNWA

+0

更改为'k.column_name' – Viney

回答

0

所有表列可在MySQL的系统表columns发现及其column_key字段包含“PRI”的情况下的列是主键的一部分。因此:。

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

YESSS!谢谢,它工作! – XanderNWA

相关问题