【问题标题】:How do I find out if a SQLite column is unique? (With SQL)如何确定 SQLite 列是否唯一? (使用 SQL)
【发布时间】:2010-11-11 20:40:37
【问题描述】:

我有桌子:

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
...

我怎样才能知道列“i”是否是唯一的。 谢谢

【问题讨论】:

标签: sql sqlite


【解决方案1】:

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

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

如果您的列在列名列表中,则它是唯一的。

【讨论】:

    【解决方案2】:

    this SO related question and answer

    sqlite> PRAGMA INDEX_LIST('test');
    0|sqlite_autoindex_test_2|1
    1|sqlite_autoindex_test_1|1
    

    【讨论】:

      【解决方案3】:

      此选择分组不准确。如果表中没有要分组的记录,如果根据 TABLE SCHEMA,列是唯一的,您将没有答案。即使所有组的 count(*)=1,也并不意味着根据架构该列是唯一的。

      【讨论】:

        【解决方案4】:
        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
        

        【讨论】:

          猜你喜欢
          • 2010-09-14
          • 1970-01-01
          • 2014-10-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-11
          • 2023-03-06
          • 1970-01-01
          相关资源
          最近更新 更多