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-如何比较两列的主要内容,如果未能解决你的问题,请参考以下文章