查询看起来像:
SELECT username, email FROM users WHERE username LIKE '%bla%' || '%bla2%' || '%bla3%' AND last_visit > '2013-05-15 00:00:00'");
该查询仅获取包含“bla”或“bla2”的记录,跳过 bla3。
怎么来的?
您正在对字符串执行逻辑 OR,这不是您想要的。
你需要这样写:
SELECT username, email FROM users WHERE (username LIKE '%bla%' or username like '%bla2%' or username like '%bla3%') AND last_visit > '2013-05-15 00:00:00'";
编辑:更新以在 Goat CO 的答案中包含更正
如果您打算申请last_visit > '2013-05-15 00:00:00'"
所有记录,则需要括号:
SELECT username, email
FROM users
WHERE (username LIKE '%bla%' or username like '%bla2%' or username like '%bla3%')
AND last_visit > '2013-05-15 00:00:00'";
如果您使用:
SELECT username, email
FROM users
WHERE username LIKE '%bla%' or username like '%bla2%' or username like '%bla3%'
AND last_visit > '2013-05-15 00:00:00'";
它将返回所有记录,如“bla”或“bla2”,但在“2013-05-15”之后只返回“bla3”。