Ann*_* K. 8 sql sqlite search select sql-like
我正在尝试创建一个搜索功能.
如果搜索输入字段是"foo bar",我将其拆分为两个关键字然后执行此查询:
SELECT p.* FROM p_extra_fields as x INNER JOIN products as p ON x.product = p.id
WHERE x.type = "1"
AND
(
(x.key = "model" AND x.value LIKE "%foo%")
OR (x.key = "model" AND x.value LIKE "%bar%")
OR (x.key = "color" AND x.value LIKE "%foo%")
OR (x.key = "color" AND x.value LIKE "%bar%")
OR (x.key = "make" AND x.value LIKE "%foo%")
OR (x.key = "make" AND x.value LIKE "%bar%")
)
GROUP BY x.product LIMIT 0, 50
Run Code Online (Sandbox Code Playgroud)
关键字的数量可能更高,因此我可能需要更多"喜欢"."钥匙"的数量也可以增加:)
有什么办法可以简化这个查询吗?我能做点什么LIKE("%foo%", "%bar%")
吗?
如果启用了SQLite FTS3和FTS4 Extensions,则可以利用全文搜索(FTS)功能.您需要将p_extra_fields
表重新创建为VIRTUAL
表.然后,您可以OR
在搜索条件之间插入并使用MATCH
运算符...
SELECT p.*
FROM p_extra_fields x
JOIN products p ON p.id = x.product
WHERE x.key IN ('model', 'color', 'make')
AND x.type = '1'
AND x.value MATCH 'foo OR bar'
GROUP BY x.product LIMIT 0, 50;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11527 次 |
最近记录: |