gpt4 book ai didi

java - 使用 AND/OR 运算符的 SQL WHERE 子句

转载 作者:行者123 更新时间:2023-12-01 17:30:06 24 4
gpt4 key购买 nike

我有下面的数据库,当我尝试运行 SQL 命令时,它并没有完全执行其应该执行的操作(下面的代码的 cursorSize 应该为 1,但它显示为 0)。

我运行的代码是:

SQLiteDatabase db = this.getReadableDatabase();

String countQuery = "SELECT songid FROM TABLE_TRACKS WHERE (tagid = 7 OR tagid = 10) AND tagid = 9";
Cursor cursor = db.rawQuery(countQuery, null);
int cursorSize = cursor.getCount();

这与 where 子句有关,因为当我更改括号并使其成为

WHERE (tagid=9 AND tagid = 7) OR tagid=10

它之所以有效,是因为 intcursorSize 是 2。关于 SQL WHERE 子句或 AND/OR 运算符,我是否遗漏了一些愚蠢的内容或我不知道的内容?

如果有人能为我解释一下这个问题以及如何获得我想要的结果,我将非常感激。 (下面我想返回 songid 等于 3 的一行。)

enter image description here

最佳答案

结果没有任何问题。它应该给你零,因为:

  • 不可能有一行 tagid 同时 = 7 和 9。
  • 不可能有一行 tagid 同时 = 10 和 9。

您需要检查您的应用逻辑以及您想在此处完成什么任务。

编辑:

因此,将songID 视为歌曲,将tagID 视为标签(吉他、钢琴、浪漫等),所以如果我想查找具有(钢琴和吉他)或浪漫标签的歌曲,怎么可能?我是否必须更改我的数据库(表)或者我可以重新编写我的 SQL 吗?

如果这是您的应用程序的上下文,并且您期望用户提供一些输入组合,我建议您更改您的数据库方案。尝试为每个标签添加 boolean 列。如果您期望这样的组合,这会更容易,并且在空间方面不会有太大差异。

关于java - 使用 AND/OR 运算符的 SQL WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11918201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com