我正在寻找在查找“单词1”或“单词2”的列上运行查询,并且如果其中一个存在,则结果需要包含“单词3”
该列本身可能非常庞大,其中包含大量文本,这是我到目前为止的内容,它不返回我正在寻找的内容:
SELECT *
FROM Table1
WHERE column LIKE "%word.1%" OR
column LIKE "%word.2%" AND
column LIKE "%word3%";
预先感谢
答案 0 :(得分:3)
您应该使用()一起管理两个OR前提
SELECT *
FROM Table1
WHERE ( column LIKE "%word.1%" OR column LIKE "%word.2%" )
AND column LIKE "%word3%" ;
答案 1 :(得分:1)
该列本身可能很大,其中包含大量文本
在那种情况下,我会建议FULL TEXT indexes,因为LIKE '%search%'
不会扩展,因为它永远无法使用索引进行优化。
并使用MATCH() ... AGAINST
来匹配
SELECT
...
WHERE
MATCH (column )
AGAINST ('word.1 word.2 +word3' IN BOOLEAN MODE);
MySQL使用有时称为隐式布尔逻辑的内容,在 哪个
+ stands for AND - stands for NOT [no operator] implies OR
应该与书写相同。 (scaisEdge的答案)
SELECT
...
WHERE
( column LIKE "%word.1%" OR column LIKE "%word.2%" )
AND
column LIKE "%word3%"