MySQL查询结果解释
问题描述:
非常简单的问题:为什么以下SQL的输出不为空?MySQL查询结果解释
SELECT * FROM table WHERE
(`FirstName` LIKE 'D%' OR `LastName` LIKE 'D%' OR `City` LIKE 'D%')
AND
(`FirstName` NOT LIKE 'D%' OR `LastName` NOT LIKE 'D%' OR `City` NOT LIKE 'D%')
我正在使用MySQL 5.1。结果是忽略了“不一样”部分。
答
如果你有一个FirstName
是的“大卫”,那么第一个括号中的条件为真。如果你有一个LastName
‘史密斯’,那么第二个括号条件为真,你的查询将返回结果。
你大概的意思是做是这样的:
SELECT * FROM table WHERE
(`FirstName` LIKE 'D%' OR `LastName` LIKE 'D%' OR `City` LIKE 'D%')
AND
(`FirstName` NOT LIKE 'D%' AND `LastName` NOT LIKE 'D%' AND `City` NOT LIKE 'D%')
(需要注意的是已更改为AND
S中OR
S)
答
更改或与,NOT LIKE
(`FirstName` NOT LIKE 'D%' AND `LastName` NOT LIKE 'D%' AND `City` NOT LIKE 'D%')
随着OR第一条件是成立的情况下的其余部分将不会有检查,因此你匹配的行。
答
姓= Arunava
姓氏=德伊
市=纽约
第一部分是真正的原因姓氏LIKE“d%”是真实的
第二部分是真实的caues姓NOT LIKE“d%”是真实的
市可不管。
答
您在条件中使用OR运算符。所以有可能上述两个不同的条件是真的,所以你会得到结果不为空。
谢谢大家的快速回复。任何人都可以建议我如何将'NOT LIKE'部分更改为'FULLTEXT'搜索。 – thelastray