SQLite-如何比较两列

Posted

技术标签:

【中文标题】SQLite-如何比较两列【英文标题】:SQLite-how to compare two column 【发布时间】:2011-09-02 06:29:10 【问题描述】:

朋友们,

我在公司做一个android项目,还有一些小工作要做,我需要你的帮助来完成任务。

问题是……

我创建了两个表,其中 table1 有一个空列,用于保存名称...

table2 有一个list of names,目的是只有这个列表中的名称应该保存在 table1 的空列中,而不是它不应该接受任何手动输入的名称。

【问题讨论】:

很不清楚的问题,请详细说明..... 在 table2 列中,存储了一个名称列表,目标是 table1 应该允许 table2 中的名称存储在其中。 你的意思是你想把你表的列的记录复制到另一个表中? 不,table2 是为 autocompletetextview 创建的...而将名称保存在 table2 中应该存储在 table1 条件是 table1 应该接受来自 table2 的名称。 【参考方案1】:

您似乎希望对名称列表进行验证:如果用户希望将名称保存到 table1,则该名称必须已存在于 table2 中。

这通常会按照以下示例进行,其中只有 PRIZEPRODUCTS 中列出的产品可以输入到 PRIZEWINNERS 表中:例如,鉴于以下数据,某人无法赢得一艘船:

           PRIZEPRODUCTS
           id
           productname

           1|TV
           2|iPad
           3|backpack



           PRIZEWINNERS
           id
           productid
           winner


           ALTER TABLE PRIZEWINNERS
           ADD CONSTRAINT PRIZEWINNERS_PRIZEPRODUCTS_FK
           FOREIGN KEY(productid) REFERENCES PRIZEPRODUCTS(id)

SQLite 不使用 ALTER TABLE 创建外键,而是作为 create-table 语句的一部分。有关语法,请参阅here。要在 Android (2.2) 中启用外键支持,请参阅here。

现在,如果 [productname] 是 PRIZEPRODUCTS 的键,您可以在 [productname] 列上建立外键。换句话说,您可以将 person-name 作为表的键,而不是使用 PersonID。但是如果在验证表中更改了该名称,它可能会破坏外键关系,除非启用了 ON UPDATE CASCADE,但我不确定 Android 是否支持。

【讨论】:

【参考方案2】:

我希望下面的查询对你有用。

insert into table1(name) values (select name from table2 where id=?).

谢谢。

【讨论】:

以上是关于SQLite-如何比较两列的主要内容,如果未能解决你的问题,请参考以下文章

从 SQLITE 中的两列中选择不同的值

在 SQLite 中组合两列的巧妙方法?

来自两列的 SQLITE group_concat 配对值

SQLITE 和自动索引

将一些数据从 sqlite 表复制到具有不同两列的同一个表中

如何从 SQLite 表中检索最后一个自动增量 ID?