Sie könnten eine UNION
:
SELECT * FROM Items WHERE column LIKE '%foo%' AND column LIKE '%bar%'
UNION
SELECT * FROM Items WHERE column LIKE '%foo%' AND NOT (column LIKE '%bar%')
UNION
SELECT * FROM Items WHERE column LIKE '%bar%' AND NOT (column LIKE '%foo%');
Aber das kann sich negativ auf die Leistung auswirken. Schlimmer noch, ich vermute, dass Sie damit eine Suchmaschine aufbauen wollen, die zuerst die aussagekräftigsten Ergebnisse liefert, und dann bleibt die Anzahl der Wörter nicht auf 2 begrenzt.
In diesem Fall könnten Sie eine score
Spalte, die die Anzahl der Treffer enthält. Etwa so:
SELECT
*,
(IF(column LIKE '%bar%', 1, 0) + IF(column LIKE '%foo%', 1, 0)) AS score
FROM Items
WHERE column LIKE '%foo%' OR column LIKE '%bar%'
ORDER BY score DESC;
Mein SQL ist ein wenig eingerostet, aber so etwas sollte zumindest in MySQL 5.0 möglich sein. Siehe auch das Handbuch für die IF
Funktion: http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html