SQLite 与内部选择

标签 sql database sqlite select

我需要根据下表架构构建 SQLite 语句。 ParentEventInfoID 映射到同一表中的其他项目。

表名称事件信息: _id、名称、描述、ParentEventInfoID、SortId

查询的部分要求需要对名称和描述执行 where 子句,我对此没有问题:

SELECT * FROM EventInfo 
   Where Name LIKE "%search text%" OR 
         Description LIKE "%search text%" 
ORDER BY SortId;

我遇到问题的部分是我还需要包含条目的父项。下面是一条语句,它返回 LIKE 的所有匹配项,但只返回一个父项目,即使我知道我应该有更多:

SELECT * FROM EventInfo 
    Where Name LIKE "%search text%" OR 
          Description LIKE "%search text%" OR 
          _id = (SELECT ParentEventInfoID FROM EventInfo
                   Where (Name LIKE "%search text%" OR 
                          Description LIKE "%search text%") 
ORDER BY SortId

我已经有一段时间没有做大量的 SQL 了,我感觉很生疏。任何帮助是极大的赞赏。谢谢!

最佳答案

试试这个

SELECT * FROM EventInfo 
    Where Name LIKE "%search text%" OR 
          Description LIKE "%search text%" OR 
          _id IN (SELECT ParentEventInfoID FROM EventInfo
                   Where (Name LIKE "%search text%" OR 
                          Description LIKE "%search text%") 
ORDER BY SortId

但是应该有更好的查询来避免内部查询中的 like 子句。

关于SQLite 与内部选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21422074/

相关文章:

sql - 使用 SQL 搜索字符串中的单词数

mysql - 循环MySQL向表中插入数据

MySQL LEFT JOIN 在第二个表中具有可选值

php - 即使使用 utf8mb4_unicode_ci,MySQL 也会出现 "Incorrect string value"错误

php - 将下拉菜单中的值保存到数据库(php、mysql)

Android SQLite 异常 : unable to close due to unfinalised statements

Android SQLite 土耳其语

iphone - 使用包装器时,语句不会在 sqlite3 中提交

sql-server - 保护对 SQL Server 数据的访问

java - 当有事务正在进行时,无法启用或禁用 SQLite 外键约束