При использовании FTS Mariadb (полнотекстовый поиск) следующая логика c довольно забавна:
SELECT id, first_name, last_name FROM user
WHERE MATCH (first_name, last_name) AGAINST ('-veli' IN BOOLEAN MODE);
Empty set (0.001 sec)
SELECT id, first_name, last_name FROM user
WHERE MATCH (first_name, last_name) AGAINST ('lauri -veli' IN BOOLEAN MODE);
+----------+------------+-----------+
| id | first_name | last_name |
+----------+------------+-----------+
| 15804835 | Lauri | Ylikangas |
+----------+------------+-----------+
1 row in set (0.001 sec)
Эта странность "хорошо", но тогда как добавить "универсальный набор" так результат будет соответствовать следующему?
SELECT id, first_name, last_name FROM user
WHERE NOT MATCH (first_name, last_name) AGAINST ('-veli' IN BOOLEAN MODE);
...
213 rows in set (0.002 sec)