2016-10-13 44 views
0

FULLTEXT検索を実行し、別個の(一意の)product_nameを持つ結果のみを返したいが、DISTINCT(product_name)は適用されていないようだ。正しい方向への助けや指導を受けることができます。MySQL FULLTEXTの結果が一致する

MySQLのQUERY:

SELECT DISTINCT(product_name), sku 
FROM products 
WHERE MATCH(product_name) 
AGAINST('Flixonase' IN NATURAL LANGUAGE MODE) 
LIMIT 5 

現在の結果:

product_name      sku 
FLIXONASE NASAL 24 HR SPRAY 60D 9300673808851 
FLIXONASE NASAL 24 HR SPRAY 120D 9400600822438 
FLIXONASE NASAL 24 HR SPRAY 60D 930067308851 
FLIXONASE NASAL 24 HR SPRAY 60D 9300673831972 
FLIXONASE NASAL 24 HR SPRAY 120D 9300673832146 

注:行1、& 4 3が重複product_namesを持っています。これが私が排除しようとしていることです。

結果、私は単一の列には適用されません

product_name      sku 
FLIXONASE NASAL 24 HR SPRAY 60D 9300673808851 
FLIXONASE NASAL 24 HR SPRAY 80D 9400600822438 
FLIXONASE NASAL 24 HR SPRAY 100D 930067308851 
FLIXONASE NASAL 24 HR SPRAY 120D 9300673831972 
FLIXONASE NASAL 24 HR SPRAY 140D 9300673832146 

答えて

0

DISTINCTを望むよ、それは、行全体を指します。特定の列に対して1行を取得する場合は、GROUP BYを使用します。

SELECT product_name, sku 
FROM products 
WHERE MATCH(product_name) 
    AGAINST('Flixonase 24hr Allergy Relief Nasal Spray 60 Doses' IN NATURAL LANGUAGE MODE) 
GROUP BY product_name 
ORDER BY MATCH(product_name) 
    AGAINST('Flixonase 24hr Allergy Relief Nasal Spray 60 Doses' IN NATURAL LANGUAGE MODE) DESC 
LIMIT 5 
+0

@Barmar
SELECT * FROM products WHERE MATCH(description) AGAINST('my product description' IN NATURAL LANGUAGE MODE) GROUP BY product_name LIMIT 10

おかげうーん、今product_name' BY 'GROUPを追加することは、もはや昇順でproduct_name''によって並べ替えむしろ5の結果、私に5本のベストマッチを与えませんか? – JasonMortonNZ

+0

クエリに 'ORDER BY'がありません。なぜ特定の順序で結果が出ると思いますか? – Barmar

+0

私は 'ORDER BY'を追加して、どのくらいマッチするかを注文しました。 – Barmar

0

ここに同じ問題があります。今度はGROUP BYで解決します。
マイコード:

関連する問題