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
...
我如何得知列是「我」的獨特與否。 感謝
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
...
我如何得知列是「我」的獨特與否。 感謝
見this SO related question and answer
sqlite> PRAGMA INDEX_LIST('test');
0|sqlite_autoindex_test_2|1
1|sqlite_autoindex_test_1|1
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
這個選擇組合是不準確的。如果組中沒有記錄,如果根據TABLE SCHEMA,該列是唯一的,那麼您將沒有答案。即使所有組都有count(*)= 1,但並不意味着根據模式該列是唯一的。
使用PRAGMA index_list(table_name);
您可以獲得所有索引的名稱。
如果唯一列的值爲1,這是唯一列的索引。之後用PRAGMA index_info(index_name);
獲得索引對應列的名稱。
如果您的列位於列名稱列表中,則它是唯一的。
可能的重複[如何找出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
我的問題在列。 – Mike 2010-11-11 22:16:17