在使用 SQLite 3.7.11
和 Java
的开发环境中,尽管阅读了以下答案:
我发现 SQLite IN
子句的用法不是很直接。
假设一个简单的表 TEST
具有以下结构:
----------------------------
id PRODUCT TAG
(int) (text) (text)
----------------------------
1 Cinthol Soap, Bath, Cleaning
2 Vim Dishwash, Kitchen, Cleaning
3 Burger Food, Breakfast, Lunch, Dinner
以下查询以这种方式运行:
----------------------------------------------------------------------------
Query Result Expected
----------------------------------------------------------------------------
SELECT PRODUCT FROM TEST WHERE TAG IN('Soap') Cinthol Cinthol
SELECT PRODUCT FROM TEST WHERE TAG IN('Dinner') <EMPTY> Burger
SELECT PRODUCT FROM TEST WHERE TAG IN('Soap', 'Bath') <EMPTY> Cinthol
SELECT PRODUCT FROM TEST WHERE TAG IN('Cleaning') <EMPTY> Cinthol, Vim
所以问题是:
- 除了第一个查询,为什么其他查询没有产生预期的结果?是不是理解有根本性的错误?
- 如果错误,获得预期结果的正确查询是什么(不使用
instr
函数)?
此外,TAG
列最终必须与 Java 中的标记数组绑定(bind),从而动态构建查询。不过,上面列出的答案指向了这一点。
提前致谢!
最佳答案
In 子句不像这样工作。假设如果每一列都有一个 TAG,您就可以获得结果。您需要添加另一个表来保留您的标签。在此表中,您需要 pk ,外键(id deom 测试) 和标签,这样你就可以为每个产品添加多个标签。这是一个你可以做出不同的解决方案。你最好先搜索数据库 notmalization.gl
关于java - 在 SQLite 中使用 IN 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33777847/