Mysql-запрос с полнотекстовым поиском и смещением, когда значения равны - PullRequest
0 голосов
/ 30 мая 2018

Эта таблица называется фруктами

CREATE TABLE fruits (
  type varchar(10) NOT NULL,
  variety varchar(20) NOT NULL,
  price decimal(5,2) NOT NULL default 0,
  PRIMARY KEY  (type,variety)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

ALTER TABLE fruits ADD FULLTEXT (type, variety);

insert into fruits(type, variety, price) values
('apple',  'gala',       2.79),
('apple',  'fuji',       2.79),
('apple',  'limbertwig', 2.87),
('apple', 'valencia',   0.87),
('orange', 'navel',      9.36),
('pear',   'bradford',   6.05),
('pear',   'bartlett',   2.14),
('cherry', 'bing',       2.55),
('cherry', 'chelan',     6.33);

, и я выполняю запрос Выбрать с помощью полнотекстового поиска.

select *,
    MATCH (type, variety) AGAINST ('apple') as score
from fruits
WHERE MATCH (type, variety) AGAINST ('apple') > 0 AND price <= 2.79
order by score
LIMIT 2 

с этим результатом

type  | variety | price | score 
-------------------------------
apple | gala    |  2.79 | 0.21812663972377777
apple | fuji    |  2.79 | 0.21812663972377777
apple | valencia | 0.87 | 0.21812663972377777

Как можно сместить результат на 1, когда

  • оценка поиска в строке 1 = оценка поискав строке 2

  • цена в строке 1 = цена в строке 2

Что я хочу из своего запроса, это вернуть

type  | variety | price | score 
-------------------------------
apple | fuji    |  2.79 | 0.21812663972377777
apple | valencia | 0.87 | 0.21812663972377777

с тех пор

  • цена = 2,79 в строках 1 и 2

  • оценка = 0,21812663972377777 в строках 1 и 2

Заранее благодарим за любую потенциальную помощь

...