2010-11-11 56 views
2

我有表:如何找出SQLite列是否唯一? (使用SQL)

CREATE TABLE test(i INTEGER UNIQUE, j INTEGER UNIQUE, k TEXT); 

pragma table_info(test); 
     cid = 0 
     name = i 
     type = INTEGER 
    notnull = 0 
dflt_value = 
     pk = 0 
... 

我如何得知列是“我”的独特与否。 感谢

+0

可能的重复[如何找出SQLite索引是否唯一? (与SQL)](http://stackoverflow.com/questions/157392/how-do-i-find-out-if-a-sqlite-index-is-unique-with-sql) – 2010-11-11 20:55:32

+0

我的问题在列。 – Mike 2010-11-11 22:16:17

回答

-2
SELECT COUNT(*),i FROM test 
GROUP BY i 
HAVING COUNT(*) > 1 

-- select all rows from test table 
-- group rows according to column i 
-- find rows which are greater than 1 
1

这个选择组合是不准确的。如果组中没有记录,如果根据TABLE SCHEMA,该列是唯一的,那么您将没有答案。即使所有组都有count(*)= 1,但并不意味着根据模式该列是唯一的。

2

使用PRAGMA index_list(table_name);您可以获得所有索引的名称。

如果唯一列的值为1,这是唯一列的索引。之后用PRAGMA index_info(index_name);获得索引对应列的名称。

如果您的列位于列名称列表中,则它是唯一的。

相关问题