我需要根据下表架构构建 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/