2015-11-05 32 views
2

我正在跟下面的查询我的数据的基础上下来列出的所有表的所有列在MySQL的如何从列中获取列是否为表的主键?

SELECT * FROM information_schema.columns 
WHERE table_schema = DATABASE() 
ORDER BY table_name, ordinal_position 

我想获得的所有列是否是一个主键或不呢?主键列显示为y,非主键列在此查询中显示为n。我怎样才能实现这个查询?

回答

2

您可以使用COLUMN_KEY柱和CASE WHEN

SELECT column_name, CASE WHEN COLUMN_KEY = 'PRI' THEN 'y' ELSE 'n' END AS result 
FROM information_schema.columns 
WHERE table_schema = DATABASE() 
    AND `table_name` = 'tab'  -- table name 
ORDER BY `table_name`, ordinal_position 

SqlFiddleDemo

+1

感谢。它有助于解决我的问题。 – chathwind

相关问题