Dies funktioniert;MySQL Volltextsuche Übereinstimmung mit Abfrage UND ODER Spalte1 = ABC
SELECT MATCH('Col1', 'Col2') AGAINST('search query') AS Score, Col1, Col2, Col3
FROM my_table
WHERE
Col1 = 'something-1'
OR
Col2 = 'something-2'
OR
MATCH('Col1', 'Col2') AGAINST ('search query') HAVING Score > 2;
Dies nicht;
SELECT MATCH('Col1', 'Col2') AGAINST('search query') AS Score, Col1, Col2, Col3
FROM my_table
WHERE
Col1 = 'something-1'
OR
Col2 = 'something-2'
OR
MATCH('Col1', 'Col2') AGAINST ('search query') HAVING Score > 2
AND Col3 = 'something3';
Ich bin nicht sicher, dies um die genauen Ergebnisse zeitigt ich noch will zurück, obwohl dies die wichtigste Frage ist: Wie Spiel gegen die mit einer AND, und was am wichtigsten ist, Ketten Dinge zusammen effektiv mit (Klammern zu verwenden,) um die richtige Mischung zu priorisieren;
Von meinen Tests für jede Kombination bisher, habe ich es nicht geschafft, dies effektiv zu arbeiten. Ich versuche, eine aktuelle komplexe Abfrage zu erweitern, die gerade AND und ORs verwendet, um auch MATCH GEGEN Informationen mit einer bestimmten Qualität zu enthalten.
Es muss einen richtigen Weg, dies zu tun, dass ich nicht richtig mache.
Update 1 Interessanterweise, wenn ich die vorgeschlagene Abfrage implementieren und die UND-Anweisung zuerst wie folgt verwenden;
Col3 = 'something3' AND
(
Col1 = 'something-1'
OR
Col2 = 'something-2'
OR
MATCH('Col1', 'Col2') AGAINST ('search query') > 2
);
Dann gibt dies tatsächlich doppelte Ergebnisse zurück.
Wie sollte die Abfrage strukturiert sein? Wenn ich zu der folgenden Abfrage übergehe, erscheint der Fehler Unbekannte Spalte 'Score' in 'WHERE-Klausel': SELECT MATCH ('Col1', 'Col2') GWAINST ('Suchabfrage') AS Score, Col1, Col2, Col3 VON my_table WHERE (Col1 = 'etwas-1' OR Col2 = 'etwas-2' OR Score> 2) UND Col3 = 'something3'; –
Ich nehme es zurück, ich habe deine Aussagen nicht richtig gelesen. Wenn Ihre Anweisung mehrfach Daten zurückgibt, ist das merkwürdig. Wenn Sie ein bisschen erklären können, was Sie wirklich acmaplish möchten, wäre es hilfreich, den ersten Kommentar als irrelevant zu löschen. – Zmrzka
Dieses Bit herausgefunden, wurden die Duplikate verursacht, weil der JOIN ein eindeutiges Feld, nicht das Primärschlüsselfeld http : //stackoverflow.com/questions/6352454/mysql-join-gives-duplicate-rows –