【发布时间】:2013-08-27 18:05:01
【问题描述】:
我正在尝试创建搜索功能。
如果搜索输入字段是“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
关键字的数量可能会更多,所以我可能需要更多的“赞”。 “key”的数量也可以增加:)
有什么方法可以简化这个查询吗?我可以做类似LIKE("%foo%", "%bar%") 的事情吗?
【问题讨论】:
-
经过大量阅读后,我能够在不安装 REGEXP imp 或 FTS3 和 FTS4 扩展的情况下完成您需要的操作,请查看我的解决方案
标签: sql sqlite search select sql-like