Если у вас есть 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%')
(обратите внимание на OR
с, которые были изменены на AND
с.)